2016-04-12 8 views
1

私はJavaでスペースシューターを作っていますが、イメージリソースを読み込もうとするとnullポインタ例外が発生します。画像以外のものはすべて正常に動作します。ディレクトリを間違ってコーディングしていますか?どうすれば修正できますか?ここでJava BufferedImage throw NullPointerException

は私のコードです:ここでは

BufferedReader highScoreReader; 
BufferedWriter highScoreWriter; 

try { 
    playerImage = ImageIO.read(this.getClass().getResourceAsStream("src/res/player.png")); 
    bulletImage = ImageIO.read(this.getClass().getResourceAsStream("src/res/bullet.png")); 
    enemyImage = ImageIO.read(this.getClass().getResourceAsStream("src/res/enemy.png")); 

    highScoreReader = new BufferedReader(new FileReader("/files/HIGH_SCORE.txt")); 
    highScoreWriter = new BufferedWriter(new FileWriter("/files/HIGH_SCORE.txt")); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

は、私のファイルディレクトリのスクリーンショットです:

enter image description here

答えて

0

私はそれがそのように行って見たことがありません。

この

try { 
    playerImage = ImageIO.read(getClass().getClassLoader().getResourceAsStream("src/res/player.png")); 
catch(IOException e) { 
} 

または

try { 
    playerImage = ImageIO.read(new File("src/res/player.png")); 
catch (IOException e) { 
} 
+0

私はこれを試しても機能しませんでした 他に問題はありますか? –

+0

エラーの内容を教えていただけますか?あなたは問題が何であるかを決して指定しなかった。あなたはイメージで何をしていますか? – Norsk

+0

私はそれらをフレームに描画しています。私がコードを実行しているとき、画像は私にNPEを投げています。画像を除くすべてが正しく機能します。 –

2

を試してみてくださいおそらく、あなたはあなたのプロジェクトのビルドディレクトリにあなたのイメージをコピーする必要があります。あなたがクラスパスリソースとして扱うようにしたいのであれば、それはeclipseのソースフォルダーにあることを確認してください(または、src/main/resourcesフォルダー内のmavenなどを使用している場合は、コピーする必要があります。それが実行しているとき.classファイルが住んでいる場所に

を忘れないでください:classpathからではない、あなたのソースパスからclass.getResourceAsStream(...)戻って物事を

0

Arnavガーグが問題を発見した

をあなたのコードが何かを言うとき。 like: file("src/res/player.png") ファイルが存在しない、つまり file.exists() は、javaがファイルであると考えて場所を見つける

falseを返します。

file.getAbsolutePath() を試して、それをあなたのディレクトリ構造と比較してください。

関連する問題