访问.jar文件中的报告

时间:2014-10-21 13:45:34

标签: java jasper-reports embedded-resource

所以大家,正如标题所暗示的那样。当我清理并将程序构建到要部署的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文件包含的内容:

enter image description here

1 个答案:

答案 0 :(得分:2)

考虑这样的结构:

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");