Eclipse ne peut pas charger des images après l'exportation du package JAR?
La raison de ce problème est principalement due au problème du chemin, qui est souvent exécuté normalement dans le projet, mais une fois emballé dans un pot, il ne peut pas être affiché normalement. Résumons les méthodes pour résoudre ce problème:
1. Résoudre en utilisant des fichiers de ressources externes
Après l'emballage du projet pour générer JAR, créez un nouveau dossier et placez tous les fichiers d'image utilisés dans le projet et généré des fichiers JAR dans ce répertoire. Tant que le code fait référence correctement aux fichiers d'image, tels que: imageicon image = new ImageIcon (swingResourceManager.getImage ("icons / logo.gif"));
De cette façon, le fichier image et le fichier de classe ne sont pas placés ensemble dans le package. Le fichier de classe est dans le package et le fichier image est dans le répertoire racine du projet.
2. Résoudre en utilisant des fichiers de ressources internes
Mettez les fichiers d'image utilisés dans le package du projet et lors de l'emballage, les fichiers d'image sont entrés dans le fichier JAR en même temps. Cette méthode doit utiliser l'un des éléments suivants dans le code spécifique:
ImageIcon image = new ImageIcon (this.class.getResource ("icons / logo.gif"));Ce qui suit est une description détaillée de cette méthode:
Lorsque vous écrivez un programme d'interfaces graphiques, vous devez utiliser diverses ressources d'image. Alors, lorsque vous publiez votre programme, comment publiez-vous ces ressources d'image?
Le moyen le plus simple consiste à emballer ces ressources d'image avec votre fichier de classe dans un fichier JAR exécutable, afin que vous n'ayez besoin de publier un fichier JAR pour inclure tous les contenus, et les utilisateurs peuvent exécuter le programme simplement en double-cliquant sur le fichier JAR. Si vous emballez des photos dans un fichier JAR, comment accédez-vous à ces photos lors de la rédaction de programmes?
Quels sont les chemins de ces images? Vous pouvez utiliser la méthode getResource () pour résoudre ce problème.
Ici, nous analysons les deux situations les plus courantes:
1. Vous emballez toutes les ressources dans Andy.jar, et votre classe est dans un package: package andycpp; Toutes vos ressources d'image sont placées dans le dossier Images, et le dossier Images est également dans le package Andycpp. De cette façon, le chemin final est:
Andy.jar
| __andycpp
| __ Guitest.class
| __ images
| __ snap1.jpg
Parce que le dossier d'image et la classe qui le fait référence se trouvent au même niveau, vous pouvez y accéder via un chemin relatif:
java.net.url imgurl = guitest.class.getResource ("images / snap1.jpg"); imageicon img1 = new ImageIcon (imgurl);Ce qui doit être fait attention ici, ce sont les problèmes de cas! L'intérieur du fichier JAR est sensible à la casse, donc si l'image elle-même est appelée snap1.jpg et que vous écrivez le chemin d'accès à des images / snap1.jpg, l'image ne sera pas trouvée. Il convient également de noter que chaque classe (note, pas un objet) a une méthode getResource (), mais vous ne pouvez pas l'utiliser avec désinvolture. Vous ne pouvez utiliser que la méthode getResource () d'une classe qui est au même niveau que le dossier d'image. Par exemple, dans la figure ci-dessus, la classe et les images Guitest sont au même niveau, vous devez donc utiliser la méthode getResource () de cette classe.
2. Dans un autre cas, si vous avez beaucoup de cours et que la structure du package est très compliquée, il est peu probable que vous mettiez l'image et la classe au même niveau, mais vous devriez mettre l'image sur le calque le plus extérieur et laisser toutes les classes accéder à l'image par des chemins absolus:
Andy.jar
| __andycpp
| __ Guitest.class
| __ images
| __ snap1.jpg
Le code est le suivant:
java.net.url imgurl = guitest.class.getResource ("/ images / snap1.jpg"); imageicon img1 = new ImageIcon (imgurl);Avez-vous vu la différence par rapport au code ci-dessus? La différence est très subtile. Ajoutez simplement une barre arrière "/" devant "Images". Cette barre oblique inverse représente le répertoire racine, et aucune barre arrière ne représente le chemin relatif.
L'article ci-dessus parle brièvement du problème de chemin des images d'emballage Java dans des pots est tout le contenu que j'ai partagé avec vous. J'espère que cela pourra vous donner une référence et j'espère que vous pourrez soutenir Wulin.com plus.