2016-12-30 24 views
0

要上傳圖片我用這個代碼我得到一個 「未知源」 例外上傳緩衝圖像

public static BufferedImage getSprite(String file,Object obj) 
{ 
    BufferedImage sprite = null; 
    try 
    { 
     sprite=ImageIO.read(obj.getClass().getResource(file)); 
    } 
    catch(Exception e) 
    { 
     System.out.println("File doesn't exist"); 
    } 
    return sprite; 
} 

然後

public class Grass 

{

BufferedImage grass=SpriteHandler.getSprite("/Resources/grass_tile.gif",this); 



public void render(Graphics g) 
{ 

    g.drawImage(grass, 0, 0, null); 
} 

}

當我將此添加到主要cl驢草草=新草() 它惹人Exception in thread "Thread-2" java.lang.NullPointerException at Game.render(Game.java:99) at Game.run(Game.java:75) at java.lang.Thread.run(Unknown Source)

我都試過了,它只能如果我把「getSprite」方法「渲染(圖形G)」裏面,但是這樣的程序會減慢

+0

上傳或下載? – Daedric

+0

ImageIO.read(obj.getClass()。getResource(file)); 這應該加載程序內的圖像 我認爲我寫錯了eheh – Vinci321

+0

你可以發佈主要的電話嗎? – BrunoDM

回答

0

未知來源

發生這種情況是因爲您的JRE中沒有包含該類的源代碼。 JVM不知道拋出異常的確切線。如果.java在jar中,堆棧跟蹤將包含精確的行。更改完整的JDK可能會解決此問題。

NullPointerException異常

有什麼不對您的render方法。嘗試調試在方法中使用的所有變量,以檢查是否所有變量都被實例化。

public void render(Graphics g){ 
    g.drawImage(grass, 0, 0, null); 
} 

檢查Javadoc那裏有沒有錯與您傳遞的參數,grass可能是null,該方法將什麼也不做,和第四個參數是可選。所以,我相信你的Graphics g是空的。