很想在 Spring Boot 中获取静态资源文件,部署为 .jar? [复制]

Posted

技术标签:

【中文标题】很想在 Spring Boot 中获取静态资源文件,部署为 .jar? [复制]【英文标题】:Hot to get an static resource file in SpringBoot , deployed as .jar? [duplicate] 【发布时间】:2021-11-03 12:52:04 【问题描述】:

我正在创建一个小型网络应用程序,它将生成并生成一个 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 应用程序中检索静态文件,当我运行它时,无论如何......我可以加载和读取该文件。

我做错了什么?

最好的问候

【问题讨论】:

【参考方案1】:

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

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

如果您的文件包含在 src/main/resources 中,这应该可以工作。

【讨论】:

谢谢!我认为我的错误是我在静态文件夹中创建了一个文件夹“报告”,而正确的位置在“资源”中。我明白了... String reportFilename = "/reports/invoice.jasper"; InputStream 是 = getClass().getResourceAsStream(reportFilename); System.out.println(is.toString()); JasperReport jcReport = (JasperReport) JRLoader.loadObject(is);

以上是关于很想在 Spring Boot 中获取静态资源文件,部署为 .jar? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Boot 中获取静态资源(js、css)作为 ClassPathResource?

Spring Boot 读取静态资源文件

Spring Boot 读取静态资源文件

spring boot整合security 4,怎么设置忽略的静态资源?

Spring Boot 静态资源

spring boot 打jar包,获取resource路径下的文件