2015-10-12 127 views
4

我是第二年剛剛開始學習Java的學生。我有這一點的代碼,它一直拋出異常:Java中的ImageIO

try 
{ 
    masterFish = ImageIO.read(getClass().getResource("fish1.gif")); 
} 
catch (IOException iOException) 
{ 
    iOException.printStackTrace(); 
} 

有人可以解釋fish1.gif部分?我應該在哪裏下載一個名爲fish1.gif的圖像?

+0

爲了使代碼正常工作,您需要在運行時在類路徑上的某處放置fish1.gif。 – hermitmaster

+1

具體而言,'fish1.gif'應該與正在嘗試加載它的類位於同一個包中。如果gif是一個動畫gif,那麼你將不想使用'ImageIO',而是需要使用'ImageIcon' – MadProgrammer

+0

你還可以告訴我們拋出什麼異常 – MadProgrammer

回答

1

看到這個問題:Loading resources using getClass().getResource()

的getResource()的的getClass()將嘗試找到使用類文件(.class擴展名)作爲參考點的資源方法。因此你的文件應該位於類文件所在的地方。例如,如果你的類是com.example.MyClass,你的「fish1.gif」文件應該位於目錄<>/src/com/example中。

混合資源和源代碼通常被認爲是糟糕的風格,因此您可能希望在項目的根目錄創建一個「資源」目錄,將資源放置在合適的層次結構中,並在集中式訪問它們辦法。

0

它很可能找不到「fish1.gif」。確保編譯代碼時,「fish1.gif」與「主類」在同一目錄中。或者,您可以不只是「fish1.gif」,而是專門寫在硬盤驅動器上的位置...... 示例:「C:/ Users/name /Desktop/fish1.gif」。

+0

我現在在src文件中(我正在使用Intellij)。它應該在別的地方嗎? – frostyshadows