很想在 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?