首页 > 解决方案 > 想在 SpringBoot 中获取静态资源文件,部署为 .jar?

问题描述

我正在创建一个小型网络应用程序,它将生成并生成一个 pdf 文件。该应用程序是使用 SpringBoot 2.5.4 创建的。

我的第一个意图是使用这一行来编译 jasper 报告

JasperReport compileReport = JasperCompileManager.compileReport(new FileInputStream("src/main/resources/Invoice.jrxml"));

在 IDE (STS 4.x) 中一切正常,但是当我“构建”并使用 java -jar 运行时,我得到了 FileNotFoundException。

然后我决定编译 .jrxml 并使用 .jasper 文件。而且我想将我的文件移动到 /resources/static/reports 文件夹,以允许包包含这些文件。

但是我又被卡住了,我想在 SpringBoot 应用程序中检索静态文件,当我运行它时,无论如何......我可以加载和读取该文件。

我做错了什么?

此致

标签: javaspring-bootjasper-reports

解决方案


AFileInputStream从文件系统中的文件中读取输入字节——它不会让您访问包含在压缩 JAR 中的文件。相反,您可以执行以下操作:

getClass().getResourceAsStream("/Invoice.jrxml");

如果您的文件包含在src/main/resources.


推荐阅读