[英]Problems to access a report in a jar file
我有一個包含多個報告(文件.jasper
)的jar應用程序,以及我獲取報告路徑的方式是:
getClass().getResource("/reportes/mireporte.jasper").toString();
但是當我執行時,我得到了下一個錯誤: FileNotFoundException
雖然當我用winrar打開它時報告在jar文件中。
我的問題是:
為什么要將資源轉換為String?
嘗試使用(取決於您希望如何使用資源):
getResource("/report/mireporte.jasper").getFile()
getResource("/report/mireporte.jasper").getInputStream()
來自'getResource'的返回對象是URL:
1)這是獲取jar文件中報告路徑的方法嗎?
是的,調用getClass().getClassLoader().getResources("mireporte.jasper")
- 它將為您提供與名稱匹配的資源列表。
2)是否可以打開jar文件中的報告?
是! 使用getClass().getResourceAsStream("...")
並從那個讀取!
例:
public static void main(String... args) throws IOException {
final ClassLoader cl = GetResource.class.getClassLoader();
// print all resources (could be more than one)
Enumeration<URL> resources =
cl.getResources("foo/bla/tjo/mireporte.jasper");
while (resources.hasMoreElements())
System.out.println(resources.nextElement());
// read one of the files
Scanner s = new Scanner(
cl.getResourceAsStream("foo/bla/tjo/mireporte.jasper"));
try {
while (s.hasNextLine()) {
System.out.println(s.nextLine());
}
} finally {
if (s != null)
s.close();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.