2012-04-14 145 views
0

我試圖訪問我已經嵌入到JAR文件中的資源。需要訪問一個文件中的類是:在JAR文件中訪問資源

/worldEntities/factories/RoomFactory.class 

,並嘗試訪問:

/map-data/roomDescriptions.xml 

要做到這一點,我已經添加以下代碼RoomFactory.class:

Document doc = docBuilder.parse(this.getClass().getResourceAsStream("/map-data" + File.separator + "roomDescriptions.xml")); 

當我在NetBeans中執行項目時,它工作正常,沒有錯誤。然而,當我試圖通過進入

java -jar Program.jar 

運行命令行的代碼,我得到了java.lang.IllegalArgumentException:InputStream中不能爲空,並且它指向我上面描述的代碼。

在此先感謝您的幫助,

托馬斯

+2

如果使用File.separator,則應該一致地使用它,包括前導斜槓。另一方面,在getResourceAsStream調用中使用它是錯誤的,因爲這不代表本地文件系統路徑。只需使用斜線,就可以保證跨平臺。 – 2012-04-14 13:21:07

回答

0
  1. 名稱與"-" char無效Java包名稱。所以"map-data"不是有效的軟件包名稱。

  2. 然後File.separator在不同的平臺上可能會有所不同。在代碼中使用"/"以確保使用有效的包分隔符。

+0

謝謝,這完全正確! – 2012-04-15 11:34:14

0

你需要確保你捆綁用的.jar資源,否則它不會被發現

This post應該幫助如何從NetBeans中執行它