2013-08-26 21 views
2

我創建一個對象,它從包中獲取圖像,然後在屏幕上繪製它。當我在netbeans中運行代碼時,它工作正常。在NetBeans之外,我得到一個空指針異常錯誤。 這是我的代碼。我使用println部分來查看「青蛙」是否等於null。當跑說是等於「/images/upFrogStill.png」,所以我不確定爲什麼空指針異常。 錯誤出現在「ImageIcon ii ...」行。線程NullPointerException如果在netbeans之外運行

public class Frog extends Sprite implements Commons { 

String frog = "/images/upFrogStill.png"; 

public Frog() { 
System.out.println("frog = " + frog); 
     ImageIcon ii = new ImageIcon(this.getClass().getResource(frog)); 
     image = ii.getImage(); 
     width = image.getWidth(null); 
     height = image.getHeight(null); 
     resetState(); 

} 
    void resetState() { 
    if(frog != null){ 
    frog = "/images/upFrogStill.png"; 
    x = 185; 
    y = 397; 
}} 
} 
+6

確保資源位於'/ images/upFrogStill.png'的類路徑中。你如何在netbeans之外運行應用程序? –

+0

基於代碼,它看起來像'青蛙'可能是由其他一些包級別設置。如果這是真的,你應該定義一個常量,而不是有兩個不同的內聯字符串來定義路徑。如果不是這種情況,你應該使'青蛙'最終決定,然後你不需要'空'檢查。 – unholysampler

+0

圖像文件位於netbeans軟件包「圖像」中,在netbeans中找到並正常工作。我不能讓青蛙最終成爲青蛙,因爲它稍後會在遊戲中變成不同的文件路徑來爲青蛙製作動畫。 –

回答

4

有是

ImageIcon ii = new ImageIcon(this.getClass().getResource(frog));正在恢復null,因爲它找不到資源高possiblilty。

如果您在netbeans外部運行,請確保您將包含在您的類路徑中。

ClassLoader.getResource is "absolute";

Class.getResource是相對於包中的類,除非你 用 '/' 作爲前綴的。

希望這會有所幫助。

相關問題