簡體   English   中英

訪問jar文件中的報告的問題

[英]Problems to access a report in a jar file

我有一個包含多個報告(文件.jasper )的jar應用程序,以及我獲取報告路徑的方式是:

getClass().getResource("/reportes/mireporte.jasper").toString();

但是當我執行時,我得到了下一個錯誤: FileNotFoundException雖然當我用winrar打開它時報告在jar文件中。

我的問題是:

  1. 這是在jar文件中獲取報告路徑的方法嗎?
  2. 是否可以打開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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM