所以大家,正如标题所暗示的那样。当我清理并将程序构建到要部署的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文件包含的内容:
答案 0 :(得分:2)
考虑这样的结构:
myjar.jar
|__ assessmentrecordsystem
|__ MyClass.class
|__ reports
|__ report1.jrxml
的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");