当前位置: 首页 > 知识库问答 >
问题:

SpringWebFlux:FileNotFoundException在我的JAR中

柳均
2023-03-14

我是乌斯金·贾斯珀报道。在develop中,它工作得很好。但在编译jar时,系统会抛出“src/main/resources/reports/myJasperReport.jxml”的异常并将其FileNotFound

当我探索JAR时,我发现报告的URL是"/BOOT-INF/class/resport/myJasperReport.jxml"

我发现这个指向jar内文件的链接不可见,但并没有解决我的问题。

你能帮帮我吗?

@Slf4j
@Service
public class ReportService {
    private static final String REPORTS_BASE_PATH = "src/main/resources/reports/";

    public ByteArrayInputStream exportReport(
            String reportFileName,
            Integer idCC,
            Map<String,Object> parameters
    ) throws Exception {
        Connection connection = CustomEntityManagerFactoryPostgresImpl
                .getInstance()
                .getConnection(idCC);

        File file = ResourceUtils.getFile(REPORTS_BASE_PATH + reportFileName);
        JasperReport jasperReport = JasperCompileManager.compileReport(file.getAbsolutePath());
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);

        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream);

        return new ByteArrayInputStream(outputStream.toByteArray());
    }
}

共有1个答案

杨波娃
2023-03-14

classpath:前缀添加到路径中。并考虑<代码>资源< /COD>文件夹为根目录。

ResourceUtils.getFile("classpath:reports/" + reportFileName);

UPD:事实上,你根本不需要文件。尝试以流形式获取资源:

InputStream report = ReportService.class.getClassLoader().getResourceAsStream("reports/" + reportFileName);
JasperReport jasperReport = JasperCompileManager.compileReport(report);
 类似资料:
  • 在尝试学习如何使用storm时。我决定编译我自己的著名WordCount拓扑实例,看看它是如何实现的。代码与示例完全相同。(https://github.com/apache/storm/blob/master/examples/storm-starter/src/jvm/org/apache/storm/starter/WordCountTopology.java) 然而,每当我尝试运行jar时

  • 我创建了一个java应用程序来从Gmail地址读取。当我从IDE(Intellij)执行脚本时,脚本运行完美。但是通过生成jar文件并尝试执行jar: 我有以下错误: 这是我的POM文件:

  • 我需要com.sun.tools jar作为编译依赖项,所以我只是将它复制到Intellij项目中的libs文件夹中。不过,我正在尝试使用Gradle。我只需要它作为我的一个模块的依赖项。我该怎么做。我当前在我的模块jar任务中有以下内容: 我还在模块的“依赖项”闭包中尝试了这一点: 在我尝试做这件事之前,它一直运作得很好。 编辑:这是一个注释处理器,所以我试图将它包含在我的模块jar构建中,而不

  • Spring boot使安装一个简单的应用程序变得非常容易。但实际上,我需要更长的时间才能获得一个可以上传到远程服务器的jar文件。我使用IntelliJ,没有命令行,我使用gradle。应用程序正在以某种方式运行Intellij。但是创建的文件在哪里?我从Bootjar买的罐子在哪里? 更新:添加了项目结构图片: 更新2:文件夹结构:

  • 问题内容: Weblogic 10.3.1.0正在使用com.bea.core.apache.commons.net_1.0.0.0_1-4-1.jar …我想从我的代码中使用commons-net-2.0.jar。 如何强制它仅在我的代码中使用较新的JAR? 问题答案: 我想从我的代码中使用commons-net-2.0.jar。 WebLogic使用 父类加载器优先策略 ,您基本上可以通过两种

  • 问题内容: 我需要在Matlab中运行Java .jar文件。 我们将文件称为MyJar.jar,如果有帮助,我正在运行Java 1.8.0_121-b13。 我尝试了不同的解决方案,并收到了这些相应的错误 我已经设置了javaclasspath:C:\ My \ Java \ Class \ Path \ To \ MyJar.jar(即使它没有任何帮助) 我什至已经准备好编辑classpath