2016-04-12 32 views
1

Java'da uzay shooter yapıyorum, ancak resim kaynaklarını yüklemeye çalıştığımda boş bir işaretçi istisnası alıyorum. Her şey görüntüler dışında iyi çalışıyor. Dizini yanlış kodlu muyum? Bunu nasıl düzeltebilirim?Java BufferedImage atma NullPointerException

İşte
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(); 
} 

benim dosya dizinleri bir görüntü var:

enter image description here

cevap

0

O şekilde yapılması görmedim

İşte benim kodudur.

bu

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

veya

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

Bunu denedim ve işe yaramadı Başka sorunlarınız var mı? –

+0

Bize hatanın ne olduğunu söyleyebilir misiniz? Sorunun ne olduğunu asla belirlemedin. Görüntülerle ne yapıyorsun? – Norsk

+0

Onları bir çerçeveye çiziyorum. Kodu çalıştırdığımda, görüntüler bana bir NPE atıyor. Her şey ama görüntüler düzgün çalışıyor. –

2

Büyük olasılıkla, projenizin inşa dizine görüntüleri kopyalamaya gerek deneyin. Bunların sizin yaptığınız gibi, classpath kaynakları olarak değerlendirilmesini istiyorsanız, tutulmada bir kaynak klasörde olduklarından emin olun (ya da maven veya benzerlerini kullanıyorsanız, src/main/resources klasöründe. Nokta, kopyalanması gerekir . çalışıyorsa zaman .class dosya yaşadığı yere

unutmayın: classpath den class.getResourceAsStream(...) döner şeyler değil kaynak yolundan

0

Arnav Garg sorunu ortaya çıkardığını

kodunuzu şey dediğinde.. gibi: file("src/res/player.png") dosya yok, örneğin file.exists() false verecektir

java dosyasının nerede olduğunu düşündüğünü öğrenin.

, file.getAbsolutePath() kullanmayı deneyin ve dizin yapınızla karşılaştırın.