2012-02-24 78 views
0

我有一堆iReport的源代碼(JRXML)的定位工作空間內部與以下路徑:如何閱讀jar文件內的jrxml文件?

<project>/report/<jrxml_file> 

當我包我的源代碼轉換成jar文件。我都會有這樣的文件結構目錄:

<jar_file>/report/<jrxml_file> 

在我的源代碼,我有這些代碼來驗證JRXML文件是否存在:

File file = new File("report/jrxml_file"); 
if (!file.exists()) { 
    return false; 
} 

當我執行過的命令,這個jar文件:

java -jar MyJar.jar 

我碰到一個錯誤,提到特定的jrxml_file不存在。

我的疑問:

  1. 我只是好奇,想知道是否是我讓閱讀jrxml_file這裏面MyJar.jar定位?
  2. 在閱讀之前,我是否需要將jrxml_file提取到物理目錄?

THanks @!

+2

通常你不會把.jrxml爲文件到一個.jar。您可以。它沒有什麼根本錯誤。但將它們編譯爲.jasper文件並將它們保存在.jar文件中更爲常見。 – mdahlman 2012-02-24 05:13:36

+1

這是否意味着我應該在將它們包含到jar文件之前編譯成jasper文件?我設計程序的方式是讀取jrxml文件,然後將其編譯爲jasper文件。我是否需要將編譯部分分離到一個程序中,然後先執行該程序,然後僅jar文件中的jasper文件?請指教。 – huahsin68 2012-02-25 12:23:39

+2

是的。通常,不需要將.jrxml文件作爲應用程序的一部分。因此,您將它們編譯爲開發步驟的一部分,並將.jasper文件放入您的應用程序中。 – mdahlman 2012-02-26 22:50:30

回答

2

如果該文件是在你的罐子頂部,在給定的路徑,你可以使用這個:

InputStream is = this.getClass().getResourceAsStream("/report/jrxml_file"); 

請參閱Java類文件:

從那裏,您可以將其作爲任何其他InputStream讀取,例如使用Apache IOUtils,如下所述:

+0

我的問題已通過將您的代碼與@ mdahlam的建議結合在一起解決。 – huahsin68 2012-02-28 03:02:18

+1

酷,很高興它爲你工作! – 2012-02-28 03:10:56