Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用独立jar从文件夹中读取文本文件的数量_Java_Spring_Spring Boot - Fatal编程技术网

Java 如何使用独立jar从文件夹中读取文本文件的数量

Java 如何使用独立jar从文件夹中读取文本文件的数量,java,spring,spring-boot,Java,Spring,Spring Boot,我有一个SpringBoot项目,它从输入文件夹读取文本文件并生成pdf报告 public void generateReport(String inputTextFileWIthPath, String compiledJasperFile, String outFilePath) { try { String[] columnNames = ["column1","column2",&q

我有一个SpringBoot项目,它从输入文件夹读取文本文件并生成pdf报告

public void generateReport(String inputTextFileWIthPath, String compiledJasperFile, String outFilePath) {
        try {
            
            String[] columnNames = ["column1","column2","column3"] ;
            

            File jasperFile = new File(compiledJasperFile);

            JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperFile);
            // Map<String, Object> parameters = new HashMap<String, Object>();
            JRCsvDataSource dataSource = new JRCsvDataSource(inputTextFileWIthPath);
            dataSource.setFieldDelimiter('|');
            dataSource.setColumnNames(columnNames);
            //Map data with fields
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, dataSource);

            DateTimeFormatter dtf = DateTimeFormatter.ofPattern("_dd-MM-yyyy_HH-mm-ss");
            LocalDateTime now = LocalDateTime.now();
                
        
            String reportFileName = "report" + dtf.format(now) + ".pdf";

          

            JasperExportManager.exportReportToPdfFile(jasperPrint, outFilePath + reportFileName);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
public void generateReport(字符串inputTextFileWIthPath、字符串compiledjasperpfile、字符串outFilePath){
试一试{
字符串[]columnNames=[“column1”、“column2”、“column3”];
File jasperFile=新文件(compiledJasperFile);
JasperReport-JasperReport=(JasperReport)JRLoader.loadObject(jasperpile);
//映射参数=新的HashMap();
JRCsvDataSource=新的JRCsvDataSource(InputExtFileWithPath);
dataSource.setFieldDelimiter(“|”);
dataSource.setColumnNames(columnNames);
//用字段映射数据
JasperPrint-JasperPrint=JasperFillManager.fillReport(jaspereport,null,数据源);
DateTimeFormatter dtf=模式的DateTimeFormatter.(“dd-MM-yyyy\uhh-MM-ss”);
LocalDateTime now=LocalDateTime.now();
String reportFileName=“report”+dtf.format(现在)+“.pdf”;
jaspeexportmanager.exportReportToPdfFile(jasperPrint,outFilePath+reportFileName);
}捕获(例外e){
e、 printStackTrace();
}
}
  • 我能够用上面的代码生成报告
但情况是这样的

  • 从输入文件夹读取所有文本文件并生成
    报告每个输入文本文件的文件,并将其存储在输出文件夹中

  • 如果任何报告生成失败,请将失败消息存储在db表中

  • 此外,应用程序应该作为一个独立的jar运行。如何定义 入口点,以便程序开始从输入读取文件
    当我们运行jar(使用调度程序)时的文件夹

    试图找出更好的实现方法。 可以使用Executor服务读取输入文件夹中的所有文件,或者是否有更好的方法来实现这一点


Java可执行jar,不包括嵌入式tomcat

因此,如果您需要一个没有spring引导的可执行Jar,您只需要在主方法中删除它:

public static void main(String[] args) {
    //SpringApplication.run(Application.class, args); <---- remove this line
    add in your business logic here!
}
publicstaticvoidmain(字符串[]args){

//run(Application.class,args);您所谓的“独立jar”是一个spring引导jar(正在运行的服务器)或者一个普通的Java可执行jar程序?Java可执行jar不包括嵌入式tomcat可能问题归结为同意你的评论的一个副本。但是我没有拿出spring boot,只是在pom.xml.org.springframework.boot spring boot starter web org.springframework.b中排除了嵌入式tomcatoot弹簧启动机tomcat