2013-08-16 82 views
0

獲取圖像(首先,我很抱歉,如果有一個像這樣的百萬個問題。我已經嘗試盡我所能,這是推動我瘋了!)錯誤,同時從資源文件夾

我m試圖給JButton一個圖標,但我一直得到由ImageIO引起的IllegalArgumentException

這是我有:

//Other UI elements^
    JButton X = new JButton("Clear");   
    //com.oliveira.ux is the package name 
    Image img = ImageIO.read(getClass().getResource("/com.oliveira.ux/resource/gtk-clear.png")); 
    Icon clear = new ImageIcon(img); 
    //More UI elements 

圖標位於在src/包裝名稱 /資源/。 (我使用eclipse)。 我試圖在代碼更改上面的位置(我寫在這裏的人是最後一個我想),但我得到的是,當我運行德的.jar一個IllegalArgumentException。有什麼建議麼?

提前

非常感謝以下是完整的錯誤消息:

Caused by: java.lang.IllegalArgumentException: input == null! 
    at javax.imageio.ImageIO.read(Unknown Source) 
    at com.oliveira.ux.Main.<init>(Main.java:146) 
    at com.oliveira.ux.Main.main(Main.java:75) 
    ... 5 more 

這點在我上面寫的代碼ImageIO的該部分。

+0

請張貼完整的堆棧跟蹤,連同任何部分「所造成」,並註明您的代碼被拋出異常的語句。 –

+1

'的getClass()。getResource()方法'查找相對於當前類的位置的文件,所以如果你的類已經是com.oliveira.ux包內,那麼你只需要通過它'「資源/ gtk- clear.png「'。順便說一下,包是文件夾,所以com應該是一個文件夾,oliveira應該是一個子文件夾,等等;因此,你會做一些像com/oliveira/blah/blah。 – sgbj

+1

這是'com.oliveira.ux'假設是一個web引用或包路徑參考。如果它是一個路徑,它不應該用'分開.'但是'/' – MadProgrammer

回答

3

的路徑似乎是錯誤的...

Image img = ImageIO.read(getClass().getResource("/com.oliveira.ux/resource/gtk-clear.png")); 

getResource沒有預料到的包名稱,但「路徑」從類路徑的背景下,資源(因此該路徑被追加到類路徑元素)

喜歡的東西...

Image img = ImageIO.read(getClass().getResource("/com/oliveira/ux/resource/gtk-clear.png")); 

應該給出一個更好的結果