10
votes

Essayer de charger l'icône du fichier JAR

J'essaie de charger des icônes à partir d'un fichier JAR. J'ai tous deux essayé de le charger des classes dans le fichier JAR ainsi que des classes à l'extérieur du fichier JAR.

En dehors du JARFILE - retourné une exception nulle xxx

sur le côté du fichier jar dans loadhtmlexemple xxx

Obtenez la même erreur.

J'ai également essayé des variations de "icônes", "/ icônes" "icônes /" "/icons/mouse.png" "icônes / souris.png"

rien ne semble fonctionner aucune idée

L'icône est Dans le fichier jar xxx


3 commentaires

Les noms sont sensibles à la casse dans la ressource JAR. Aussi un départ / peut-être manquant.


J'ai également essayé des variations de "icônes", "/ icônes" "icônes /" "/icons/mouse.png" icônes / souris.png "


J'ai le même problème exact et j'ai essayé toutes les mêmes choses que vous le mentionnez, comment l'avez-vous résolu? Merci!


6 Réponses :


5
votes

J'ai toujours utilisé le chargeur de classe système, dont le chemin est relatif à la racine du pot: xxx


0 commentaires

5
votes

Ignorer le chargeur de classe et obtenir la ressource comme flux à la place. Si vous n'avez pas besoin de l'URL, vous pouvez les transformer directement en bufferedimages comme vous. J'ai quitté le flux et la manipulation des exceptions comme un autre exercice.

InputStream stream = LoadHTMLExample.class
    .getResourceAsStream( "/icons/mouse.png" );
BufferedImage image = ImageIO.read( stream );


3 commentaires

Class.GetResourceastream () Il suffit de déléguer au chargeur de classe. C'est essentiellement la même chose.


J'ai besoin de l'URL, un webrenderObject va utiliser l'emplacement de la ressource pour tirer les icônes.


Vous avez également essayé la méthode et l'image est toujours nulle, de sorte que de toute façon ne fonctionne pas ... Qu'est-ce qui bloque la lecture d'un fichier JAR?



1
votes

Je pense que getresource code> obtient la ressource par rapport à l'emplacement de loadhtmlexample.class code>. Donc, votre JARFILE CODE> doit être structuré de la manière suivante:

myjar.jar
 |
 |- ...
 |- LoadHTMLExample.class
 |- ...
 \-- icons
      |
      \- mourse.png


3 commentaires

Alternativement, changez le chemin de icône / souris.png à /icon/mouse.png (Notez le '/' au début).


Tout le reste envisagé, vous devez définitivement besoin de faire ce que Pierre a suggéré, car de charger "icônes / souris.png" signifie le charger par rapport à la classe. Dans votre jar, vous avez des icônes de la racine, vous devez donc préfixer avec une incrustation.


Je l'ai eu pour travailler! final java.net.url imageURL3 = com.java.html.loadhtmlexample.class.getresource ("icônes /"); cela fonctionne pour le diagramme ci-dessus



0
votes

Le pot en question est-il en question sur la classe de classe de votre heure d'exécution? J'ai un pot avec pngs dedans et je peux recréer les NULLS si je n'inclut pas la classe de classe. Si le bocal est là, ils s'en vont.


0 commentaires

0
votes

final java.net.url imageurl3 = com.java.html.loadhtmlexample.class.getresource ("icônes /");

fonctionne pour la structure de répertoire ci-dessous

myjar.jar | | - ... | - loadhtmlexample.class | - ... -- Icônes | - Mource.png

Merci pour l'aide de tout le monde


0 commentaires

0
votes
Icon icon = new ImageIcon(ClassLoader.getSystemResource("icons/mouse.png"));
From the JavaDoc of getSystemResource():
  Find a resource of the specified name from the search path used to load classes...
This will find your icons even in a jar-file.

0 commentaires