16

私はSnakeJavaゲームのチュートリアルに従っていますが、常にこのエラーが発生します。

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)

実際にコードをコピーして貼り付けて、どのように機能するかを確認しました。それらも適切なパッケージに含まれています。しかし、それを実行しようとすると、常にこのエラーが発生します。

4

11 に答える 11

15

イメージは、コンパイルされたクラスと同じパッケージ(OS用語ではフォルダー)に含まれている必要があります。.class.pngが同じフォルダにあるかどうかを確認してください。そうでない場合は、でクラスパス相対パスを使用できますgetResource(..)/

于 2011-04-24T07:53:00.710 に答える
8

これを試して:

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

画像がJavaファイルと同じフォルダにあることを確認してください。

于 2011-04-24T07:53:44.750 に答える
6

を使用System.out.println(System.getProperty("java.class.path"));して .class ファイルの場所を見つけ、このフォルダーに画像を配置してみてください。

于 2013-05-24T14:56:16.237 に答える
4

相対パスを使用してリソースをロードすることは一般的に危険です。絶対パスを使用することを常にお勧めします。

 /ball.png

画像がクラスパスのルートにある場合、またはその場所へのパスを追加します。

于 2011-04-24T07:51:04.337 に答える
2

画像ファイル(ball.png)をクラスパスに入れる必要があります。詳細については、Javadocをご覧ください。

于 2011-04-24T07:53:49.430 に答える
0

リソースがクラスパスにある場合は、「this.getClass()。getClassLoader()。getResource( "ball.png")」を試してみてください。実際のコードを機能させるには、ball.pngが.classファイルがある場所(つまり、パッケージ内)にある必要があります。

于 2011-04-24T07:51:53.300 に答える
0

画像のパスのみを使用できます。これが役立つと思います:これを使用してください:

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"));

注:スネークコードのみを試して、出力のみを取得したい場合。

于 2016-11-08T10:48:58.907 に答える
0

Eclipse でプロジェクト >clean に移動すると、パッケージ エクスプローラーが更新され、この問題に直面することはなくなります。

于 2015-06-25T06:31:21.003 に答える
0

次のように、ファイルをビルド リソースに追加する必要がある場合があります。

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

于 2016-11-07T20:27:45.567 に答える
-2

そのように名前が付けられたリソースが見つかりませんでした。呼び出し元の.classファイルと同じディレクトリにある必要があります。Javadocを参照してください。

于 2011-04-24T07:50:32.497 に答える