Je suis le tutoriel sur les jeux Java Snake zetcode et je reçois toujours cette erreur:
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)
En fait, je viens de copier et coller le code pour voir comment cela fonctionne. Ils sont dans les bons paquets aussi; mais quand j'essaye de l'exécuter, je finis toujours avec cette erreur.
L'image doit être dans le même package (dossier en termes de système d'exploitation) que la classe compilée. Vérifiez si vous avez à la fois .class
et .png
dans le même dossier. Sinon, vous pouvez utiliser les chemins relatifs aux chemins de classes dans getResource(..)
, en commençant par /
Essayez d’utiliser System.out.println(System.getProperty("Java.class.path"));
pour trouver l’emplacement de votre fichier .class et placez les images dans ce dossier.
Essaye ça:
ImageIcon iid = new ImageIcon(this.getClass()
.getClassLoader().getResource("ball.png"));
ball = iid.getImage();
Assurez-vous que l'image se trouve dans le même dossier que le fichier Java.
Il est généralement risqué de charger des ressources en utilisant des chemins relatifs, je recommanderais toujours d’utiliser des chemins absolus, alors
/ball.png
si l'image se trouve à la racine de votre chemin de classe, ou ajoutez un chemin à l'emplacement.
Vous devez mettre le fichier image (ball.png) dans votre chemin de classe. Plus de détails, s'il vous plaît jeter un oeil à le Javadoc .
Allez dans projet> nettoyer dans Eclipse, cela actualiserait le paquet Explorer et vous ne feriez plus face à ce problème.
Vous ne pouvez utiliser que le chemin de votre image. Je pense que cela vous aidera: Utilisez ceci:
ImageIcon iid = new ImageIcon("C:\\Users\\ranig\\My\\spaceinvaders\\ball.png");
Remarque: C:\\Users\\ranig\\My\\spaceinvaders\\ball.png
est le chemin complet de l'image ball.png.
au lieu de cela:
ImageIcon iid = new ImageIcon(this.getClass().getResource("ball.png"));
Remarque: Si vous voulez uniquement essayer le code de serpent et obtenir uniquement une sortie.
Vous devrez peut-être ajouter le fichier à vos ressources de génération, à peu près comme ceci:
<build>
<resources>
<resource>
<directory>path\to\resources</directory>
<includes>
<include>ball.png</include>
</includes>
</resource>
</resources>
si la ressource est dans votre chemin de classe, vous devriez alors essayer "this.getClass (). getClassLoader (). getResource (" ball.png ")". Pour que votre code fonctionne, ball.png doit être à l’emplacement où se trouve votre fichier .class (c’est-à-dire à l’intérieur du paquet).
Je vais le rendre simple pour vous. Voici un exemple:
Icon bug = new ImageIcon(getClass().getResource("bug1.png"));
ici "bug1.png" est la ressource et si elle est indisponible, cela peut provoquer une erreur comme vous en avez discuté ici.
Importez une image dans le même répertoire que votre programme.
Vous pouvez également lui donner un chemin complet
ImageIcon(getClass().getResource("C://me/file/bug1.png"));