【问题标题】:Hot to get an static resource file in SpringBoot , deployed as .jar? [duplicate]很想在 Spring Boot 中获取静态资源文件,部署为 .jar? [复制]
【发布时间】: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 应用程序中检索静态文件,当我运行它时,无论如何......我可以加载和读取该文件。

我做错了什么?

最好的问候

【问题讨论】:

    标签: java spring-boot jasper-reports


    【解决方案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);
    猜你喜欢
    • 2016-11-04
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 2016-10-01
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多