2016-07-10 59 views
0

我希望能夠從jar內部加載圖片。圖片將不會從jar的根目錄加載

很多網頁都說要使用我正在使用的確切代碼。有人說使用getClass(),但我在我的主要方法中運行代碼,我的類不是靜態的。

目前我在主類的主要方法中有以下代碼。

try { 
    ImageIcon icon = new ImageIcon(BlockWorld.class.getResource("icon.png")); // line 46 
    window.setIconImage(icon.getImage()); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

我知道一個事實,即icon.png是在罐子裏的根。這是一個128×128 PNG沒有阿爾法。

一切都很好。當我運行這個jar時,它發佈了以下內容。

java.lang.NullPointerException 
at javax.swing.ImageIcon.<init>(Unknown Source) 
at com.Tgwizman.BlockWorld.BlockWorld.main(BlockWorld.java:46) 

有沒有人有任何建議?

回答

0

向路徑中添加前導斜槓以使用jar的根文件夾。

getResource("/icon.png")

+0

此外,不應該'getResource'調用的類加載器?正如在'BlockWorld.class.getClassLoader()。getResource(「/ icon.png」)中那樣' – coladict

+0

不是這種情況。代碼現在可用。我不知道爲什麼java沒有jar根目錄作爲默認目錄。它花了我一直試圖弄清楚這一點。當我終於在這裏發佈了一個問題時,我發現http://stackoverflow.com/questions/2593154/get-a-resource-using-getresource將該問題的答案作爲另一個問題的答案的一部分。 – Tgwizman

+1

在處理這類操作時,務必確保爲資源提供正確的路徑,這一點非常重要。 也如上所述,不需要調用類加載器。 – Aris