簡體   English   中英

Java getClass().getResource("file") 導致 NullPointerException

[英]Java getClass().getResource("file") leads to NullPointerException

我正在關注Snake Java 游戲教程,但總是收到此錯誤:

ImageIcon iid = new ImageIcon(this.getClass().getResource("ball.png"));
ball = iid.getImage();

Exception in thread "main" java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(Unknown Source)
    at snake2.Board.<init>(Board.java:52)
    at snake2.Snake.<init>(Snake.java:10)
    at snake2.Snake.main(Snake.java:22)

我實際上只是復制並粘貼了代碼以查看它是如何工作的。 它們也在正確的包裝中; 但是當我嘗試運行它時,我總是以這個錯誤告終。

圖像應該與編譯的類位於同一個包(操作系統術語中的文件夾)中。 檢查您是否在同一文件夾中同時擁有.class.png 如果沒有,您可以在getResource(..)使用類路徑相對路徑,以/開頭

嘗試這個:

ImageIcon iid = new ImageIcon(this.getClass()
                  .getClassLoader().getResource("ball.png"));
ball = iid.getImage();

確保圖像與 java 文件在同一文件夾中。

嘗試使用System.out.println(System.getProperty("java.class.path")); 找出 .class 文件的位置並將圖像放在此文件夾中。

使用相對路徑加載資源通常有風險,我總是建議使用絕對路徑,所以這樣做

 /ball.png

如果圖像位於類路徑的根目錄,或添加到該位置的路徑。

您必須將圖像文件(ball.png)放入您的類路徑中。 更多細節,請查看Javadoc

在 Eclipse 中轉到 project >clean 它將刷新包資源管理器,您將不再遇到此問題。

您可能需要將該文件添加到您的構建資源中,如下所示:

<build>
    <resources>
        <resource>
            <directory>path\to\resources</directory>
            <includes>
                <include>ball.png</include>
            </includes>
        </resource>
    </resources>

您只能使用圖像的路徑。 我認為這會幫助你:使用這個:

ImageIcon iid = new ImageIcon("C:\\Users\\ranig\\My\\spaceinvaders\\ball.png");

注意: C:\\\\Users\\\\ranig\\\\My\\\\spaceinvaders\\\\ball.png是ball.png 圖像的整個路徑。

而不是這個:

ImageIcon iid = new ImageIcon(this.getClass().getResource("ball.png"));

注意:如果您只想嘗試蛇代碼並且只想獲得輸出。

我會讓你變得簡單。 下面是一個例子:

Icon bug = new ImageIcon(getClass().getResource("bug1.png"));

這里“bug1.png”是資源,如果它不可用,那么它可能會導致錯誤,正如您在此處討論的那樣。

將圖像導入到您的程序所在的同一目錄中。

你也可以給出完整的路徑

ImageIcon(getClass().getResource("C://me/file/bug1.png"));

如果資源在您的類路徑中,那么您應該嘗試“this.getClass().getClassLoader().getResource("ball.png")”。 為了讓您的實際代碼工作,ball.png 需要位於您的 .class 文件所在的位置(即,在包內)。

未找到如此命名的資源。 它需要與您從中調用它的 .class 文件位於同一目錄中。 請參閱 Javadoc。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM