【问题标题】:Accessing report inside a .jar file访问 .jar 文件中的报告
【发布时间】:2014-10-21 13:45:34
【问题描述】:

伙计们,正如标题所暗示的那样。当我清理并将程序构建到要部署的 jar 文件时,我无法访问我的报告。我尝试上网寻找可能的解决方案,但没有一个是正确的。所以下面是我尝试访问 jar 文件中的报告时所做的:

URL reportURL = getClass().getClassLoader().getResource("assessmentrecordsystem\\reports\\report1.jrxml");//returns nothing

reportInputStream = this.getClass().getClassLoader().getResourceAsStream("\\reports\\report1.jrxml");//all so returns nothing

我错过了什么??

这是我的 jar 文件包含的内容:

【问题讨论】:

标签: java jasper-reports embedded-resource


【解决方案1】:

考虑这样的结构:

myjar.jar
  |__ assessmentrecordsystem
        |__ MyClass.class
        |__ reports
              |__ report1.jrxml

您可以使用 getResourceAsStream() 的 MyClass 中的相对路径加载资源

InputStream is = MyClass.class.getResourceAsStream("reports/report1.jrxml");

否则,您需要在 jar 中的 /META-INF/MANIFEST.MF 文件中添加以下条目:

Class-Path: .

然后您可以使用getClassLoader().getResourceAsStream() jar 根目录的绝对路径加载文件

InputStream is = MyClass.class.getClassLoader().getResourceAsStream(
        "/assessmentrecordsystem/reports/report1.jrxml");

【讨论】:

  • 我的课程不在同一个目录下。。看看我上面上传的图片。
  • 不断收到 java.net.MalformedURLException ,这是什么原因,我移动了报告,以便它与班级位于同一目录中。
  • 我尝试了您的第二个建议,但这并没有解决问题,但我删除了 .getClassLoader() 部分并且它工作正常。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-20
  • 2013-12-13
  • 1970-01-01
相关资源
最近更新 更多