Jar... J'arrive pas...

Résolu
Signaler
Messages postés
492
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
25 avril 2007
-
Messages postés
492
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
25 avril 2007
-
Salut a tous...
...enfin, si j'y arrive un petit peu... j'ai bien mon jar qui s'execute parfaitement... sauf que j'ai des fichiers images dans mon prog... bref quand je fait fonctionner mon code avec eclipse pas de probleme les images s'affichent bien comme il faut la ou il faut... sauf que avec le Jar (sans eclipse donc) ca marche pas. Dans mon code, j'utilise des chemins relatifs... au debut j'utilisait des adresse de fichier absolue (genre "C://monRep/mesRessources/monFicier.jpg" ou en fait monRep etait le repertoire de mon prog). Par la suite, je me suis appercu que les chemin d'acces relatifs fonctionnaient (sous eclipse) (genre "mesRessources/monFichier.jpg"). Bref, je fait un .jar avec mon prog une fois fini en me disant que le chemin relatif devrait toujours fonctioné (convertit pour l'occasion en "C://monJar.jar/mesResources/monFichier.jpg")... bah pas du tout...
Y a t il une astuce ?

WazAbriBus
_______________________________
La direction de la RATP vous rappelle que la
dégradation d'AbriBus est passible de lourdes
sanctions.
Ne dégradez pas les AbriBus. L'AbriBus est ton ami.

9 réponses

Messages postés
545
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
28 septembre 2011
2
C'est normal. Il ne rentre pas dans ton if (mets y un System.out.println("yo"); pour en etre sur).

Donc forcement il trouve pas l'image.



Contente toi de :



public Imageur(String AdresseImage) {

Oeuvre = new ImageIcon (getClass().getResource(AdresseImage));

}



Ce sera amplement suffisant.

gmi19oj19
Messages postés
492
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
25 avril 2007
5
Je viens d'y penser... ce peut-il que ca ait quelque chose a voir avec quelque restriction d'acces aux fichiers ou un truc du style ?

AbriBus
_______________________________
La direction de la RATP vous rappelle que la
dégradation d'AbriBus est passible de lourdes
sanctions.
Ne dégradez pas les AbriBus. L'AbriBus est ton ami.
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
hello,





pour acceder a une ressource citué dans un jar tu dois passer par ce mecanisme :



admetton que l'image titi.gif se trouve dans le repertoire toto du jar tata.jar

a condition biensur que tata.jar soit le jar contenant egalement tes classes



Image im = Toolkit.getDefaultToolkit().getImage(


getClass().getClassLoader().getResource("toto" + File.separator +
"titi.gif"));


WORA
Messages postés
492
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
25 avril 2007
5
Ca marche pas... voici mon code:
ImageIcon ii = new ImageIcon(Toolkit.getDefaultToolkit().getImage(getClass().getClassLoader().getResource(AdresseImage)));
ca change rien... il y a toujours pas les images... AdresseImage est une String contenant en l'occurence "images/image1.jpg" ...

AbriBus
_______________________________
La direction de la RATP vous rappelle que la
dégradation d'AbriBus est passible de lourdes
sanctions.
Ne dégradez pas les AbriBus. L'AbriBus est ton ami.
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
tu lance avec quoi?

parceque qd tu utilise cette methode pour lire une ressource dans un
jar ca ne marche pas avec eclipse, jbuilder ... qui eux ne se repose
pas sur le jar pour lancer l'appli que tu code donc essaye de lancer à
coté par un double clik ou encore par un terminal en saisisant "java
-jar tonJar.jar"




WORA
Messages postés
492
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
25 avril 2007
5
c'est ce que je fait (par un jar executable en fait)... et pour ne rien te cacher, comme j'ai écrit une classe juste pour extraire une image d'un fichier, je l'ai juste adapté a ce que tu avais dit... voila... je te met le constructeur en entier qui, tu le verra fonctionne (enfin, devrait) aussi bien avec que sans Eclipse en l'occurence.

private ImageIcon Oeuvre;
public Imageur(String AdresseImage)
{
File isDirectFile = new File(AdresseImage);//Rajouté pour l'occasion...
this.Oeuvre = new ImageIcon(AdresseImage);
if(!isDirectFile.isFile()) //...et ca aussi...
{
Oeuvre = new ImageIcon(Toolkit.getDefaultToolkit().getImage(getClass().getClassLoader().getResource(AdresseImage)));
}
}

AbriBus
_______________________________
La direction de la RATP vous rappelle que la
dégradation d'AbriBus est passible de lourdes
sanctions.
Ne dégradez pas les AbriBus. L'AbriBus est ton ami.
Messages postés
545
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
28 septembre 2011
2
Vous vous compliquez bien la vie avec vos Toolkit et ClassLoader



ImageIcon tonImage = new ImageIcon (getClass().getResource(chemin_relatif_de_ton_image_par_rapport_au_package_de_ta_classe);


Si c'est bon, ça doit tjs marcher avant de passer en jar, ça fait gagner du temps dans les tests^^






gmi19oj19
Messages postés
492
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
25 avril 2007
5
bah malheureusement ca marche toujours pas... mais alors maintenant pour le coup ca me met carrement un genre de messagebox qui provient de la Vdm et qui me dit "Could not find the main class. Program will exit." (il est a noté que ce message apparait egalement quand j'essaye d'executer le jar d'un autre ordinateur... alors que sur le mien, si j'enleve les dernieres modifs relatives aux images, ca marche tres bien sur mon ordinateur)... bref, je suis toujours dans la galere...
Voila le code que j'ai testé...:
private ImageIcon Oeuvre;

public Imageur(String AdresseImage)
{
File isDirectFile = new File(AdresseImage);
this.Oeuvre = new ImageIcon(AdresseImage);
if(!isDirectFile.isFile())
{
Oeuvre = new ImageIcon (getClass().getResource(AdresseImage));


}
}

AbriBus
_______________________________
La direction de la RATP vous rappelle que la
dégradation d'AbriBus est passible de lourdes
sanctions.
Ne dégradez pas les AbriBus. L'AbriBus est ton ami.
Messages postés
492
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
25 avril 2007
5
C'est nikel... petite info utile si d'autres suivent ces traces... la chaine de caractères passée en paramètres à la fonction .getResource() est CaSe SeNsItIvE meme pour l'extention du fichier. (héhé... j'ai failli me faire avoir )

Bravo gmi19oj19 et merci a vous deux toi et Twinuts.
Bonne prog a tous et continuez les gars... je suis un grand fan !

AbriBus
_______________________________
La direction de la RATP vous rappelle que la
dégradation d'AbriBus est passible de lourdes
sanctions.
Ne dégradez pas les AbriBus. L'AbriBus est ton ami.