【问题标题】:How to read jrxml file inside the jar file?如何读取jar文件中的jrxml文件?
【发布时间】:2023-04-02 05:47:01
【问题描述】:

我有一堆 iReport 源代码 (jrxml) 位于工作区中,路径如下:

<project>/report/<jrxml_file>

当我将源代码打包到 jar 文件中时。我会有这个文件结构目录:

<jar_file>/report/<jrxml_file>

在我的源代码中,我有这些代码来验证 jrxml 文件的存在:

File file = new File("report/jrxml_file");
if (!file.exists()) {
   return false;
}

当我通过命令执行这个jar文件时:

java -jar MyJar.jar

我遇到了一个错误,提到特定的 jrxml_file 不存在。

我的疑问:

  1. 我只是想知道我是否允许读取位于 MyJar.jar 中的 jrxml_file?
  2. 是否需要先将 jrxml_file 提取到物理目录才能读取它?

谢谢@!

【问题讨论】:

  • 通常不会将 .jrxml 文件放入 .jar。你可以。从根本上来说并没有什么问题。但更常见的是将它们编译为 .jasper 文件并将它们保存在 .jar 文件中。
  • 这是否意味着我应该先编译成 jasper 文件,然后再将它们包含到 jar 文件中?我设计程序的方式是读取jrxml文件,然后编译成jasper文件。我是否需要将编译部分分离到一个程序中,然后先执行该程序,然后只 jar jasper 文件?请指教。
  • 是的。通常不需要将 .jrxml 文件作为应用程序的一部分。因此,您将它们编译为开发步骤的一部分,然后将 .jasper 文件放入您的应用程序中。

标签: java jasper-reports


【解决方案1】:

如果文件位于给定路径的 jar 顶部,则可以使用:

InputStream is = this.getClass().getResourceAsStream("/report/jrxml_file");

查看 Java 类文档:

从那里,您可以像任何其他 InputStream 一样读取它,例如使用 Apache IOUtils,如下所述:

【讨论】:

  • 通过将您的代码与@mdahlam 的建议结合起来,我的问题已得到解决。
猜你喜欢
  • 2011-01-17
  • 1970-01-01
  • 2016-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 2018-12-22
相关资源
最近更新 更多