2013-01-11 59 views
0

我目前正在嘗試爲我正在處理的小遊戲加載spritesheet。問題是,這段代碼在這裏:工作正常的ImageIO.read表達式突然停止這樣做

private void load(){ 
    try { 
     BufferedImage image = ImageIO.read(Sprite.class.getResource(path)); 
     int w = image.getWidth(); 
     int h = image.getHeight(); 
     image.getRGB(0, 0, w, h, pixels, 0, w); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

ImageIO.read()總是返回null。它也不會拋出任何例外。很明顯,我在下一行發生錯誤,因爲我打電話image.getWidth(),因爲圖像是null

真正令我困擾的是,10分鐘前相同的代碼工作得很好。我沒有改變任何東西,只是一個根本不影響閱讀過程的價值;即使改回它也不會做任何事情。

有沒有人知道該怎麼辦?

+0

您應該經常檢查'ImageIO.read'的返回值,因爲當圖像無法解碼時,返回空值是正常的返回值http://docs.oracle.com/javase/6/docs/ API /的javax/ImageIO的/ ImageIO.html#讀取(java.net.URL中)。 – Michael

回答

0

我認爲你的問題是在這裏:

Sprite.class.getResource(path) 

你可以出此線並檢查正確與否的路徑。 當您的文件路徑不正確時,會發生此問題。使用以下代碼行檢查文件路徑:

System.out.println(Sprite.class.getResource(path)); 

然後您可以找到問題。

+0

是的,這幫助了我,雖然它不是問題。路徑確實是正確的,但通過後面的提示,我發現圖像文件已損壞 - 我不知道如何發生,但我解決了它:) – user1899069