[JAR] Accéder à une resource contenue dans un jar
Bonjour tous, ben ma question est dans le titre, je qu'il y a un exemple dans la faq et je m'en suis inspiré.
Je voudrais donc charger une image qui est contenu dans un jar je fai ceci:
Code:
1 2
|
Image icone = Toolkit.getDefaultToolkit().getImage( getClass().getResource("./Datas/email.png") ); |
seulement ca me claque une excetpion:
Code:
1 2 3 4 5 6 7 8
|
Uncaught error fetching image:
java.lang.NullPointerException
at sun.awt.image.URLImageSource.getConnection(URLImageSource.java:97)
at sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:106)
at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:240)
at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136) |
Getclass() me renvoit null en somme. Je pense que c'est du au faite que mon appli utilise plusieurs jar,(enfin je suis pas spécialiste la dessus) et qu'elle se plante. j'ai chercher si il y avai un moyen de spécifier dans qu'elle jar aller chercher l'image mais sans succès.
Quelqu'un a t'il une solution?
Sinon est ce possible de compiler une image directement dans le .class? Comme on peut le faire dans un executable fait en c++ par exemple?
merci
Re: Acceder a une resource contenu dans un jar
Salut,
Citation:
Envoyé par Blo0d4x3
Getclass() me renvoit null en somme.
C'est plutôt getRessource() puisque getClass() ne peut pas renvoyer null...
Citation:
Envoyé par Blo0d4x3
Je pense que c'est du au faite que mon appli utilise plusieurs jar,(enfin je suis pas spécialiste la dessus) et qu'elle se plante. j'ai chercher si il y avai un moyen de spécifier dans qu'elle jar aller chercher l'image mais sans succès.
Non les différents jar sont bien géré, le problème vient surement du fait que tu ne spécifie pas le bon chemin...
Je m'explique : Le chemin des ressources est un chemin logique dans le CLASSPATH (c'est à dire des répertoires ou des Jar).
Deux cas de figure se présente :
- Tu passes un chemin qui commence par / : le chemin est utilisé tels quel.
Exemple : getResource("/Datas/email.png") recherchera le fichier correspondant dans les divers éléments de ton CLASSPATH (dans l'ordre de déclaration) :
[list:26340c8f98] - Si c'est un répertoire, (par exemple C:\classes) il recherchera le fichier dans l'arborescence correspondante (C:\classes\Datas\email.png).
- Si c'est un Jar, il recherchera le fichier dans l'arborescence correspondante à l'intérieur du jar (Datas\email.png dans le jar).
[*] Mais si tu lui passes un chemin qui ne commence pas par /, il considèrera que le chemin est relatif à la classe de getClass(). Ainsi si ta classe appartient au package com.masociete.monpackage, getResource("./Datas/email.png") recherchera en réalité le fichier suivant : /com/masociete/monpackage/./Datas/email.png (avec la même règle que ci dessus)...[/list:u:26340c8f98]
Donc à toi d'adapter ton chemin selon tes besoins...
a++