2011-06-16 114 views
8

我製作了一個Java應用程序,並將所有類都捆綁在一個jar文件中。當我從eclipse運行項目時,我的應用程序運行成功。但是,當我嘗試運行我的.jar文件時,我沒有收到我的應用程序使用的圖標。在代碼中,我從圖像目錄中獲取項目文件夾中的圖標。如何在使用jar時將這些圖像文件呈現給最終用戶?如何使用eclipse在jar文件中包含所有圖像

我加載像這樣的形象:

final public ImageIcon iReport=new ImageIcon("images/Report.png"); 

我也曾嘗試

final public ImageIcon iquit=new ImageIcon(getClass().getResource("images/quit.png")); 

final public ImageIcon iquit=new ImageIcon(getClass().getResource("/images/quit.png")); 

但是這將導致一個錯誤:

Exception in thread "main" java.lang.NullPointerException 
at javax.swing.ImageIcon.<init>(Unknown Source) 
+0

告訴我們一些代碼?如何加載它有時可用,但不是其他人? – 2011-06-16 13:55:33

+0

您應該查看您如何訪問代碼中的圖像資源。確保它在jar文件中可以訪問相對URL! – gotomanners 2011-06-16 13:55:55

+0

你可能看看class.getResourceAsStream() – McPepper 2011-06-16 14:04:47

回答

11

您需要從類路徑而不是從本地磁盤文件系統中獲取它。

假設images實際上是一個包,這個包是同一個JAR與當前類裏面,那麼這樣做:

final public ImageIcon iReport = 
    new ImageIcon(getClass().getResource("/images/Report.png")); 
+0

我已經完成了alreadt,但它不起作用 – sanu 2011-06-16 14:17:54

+1

然後路徑顯然是錯誤的。你知道什麼時候需要使用前導斜槓'/'嗎?你知道相對路徑是如何工作的嗎? – BalusC 2011-06-16 14:19:45

+0

好的謝謝,我明白了....但現在我得到了不同的問題,它使用Eclipse的一切正常工作,但沒有工作後製作jar ....實際上jar文件沒有運行。 – sanu 2011-06-16 17:44:51

2

在jar文件中的文件被視爲「資源」。您需要將它們作爲類路徑資源進行訪問,常規的文件訪問方法在此不起作用。

試試這個:

final public ImageIcon iReport = (new ImageIcon(getClass().getResource("images/Report.png"))); 
1

我知道這是很久以前問過,但它可能會幫助其他有同樣問題,跟我一樣。我已經使用getClass()。getResource(「...」),但資源沒有用.jar文件導出。 我通過刷新'Resources'文件夾及其每個子文件夾來解決問題。

+0

我希望這[回答](http://stackoverflow.com/a/ 9278270/1057230)肯定會幫助你:-)更多信息可以在這裏找到[answer](http://stackoverflow.com/a/9866659/1057230) – 2013-07-14 16:40:15

+0

謝謝你這麼多。 – 2013-12-16 04:40:32

1

100%的工作

final public ImageIcon iReport = new ImageIcon(getClass().getResource("/Report.png")); 

不要忘記 「/」 在path圖像。

相關問題