Utiliser des images ou fichier txt avec un jar exécutable
bourgi220
Messages postés21Date d'inscriptionsamedi 27 mars 2004StatutMembreDernière intervention30 août 2006
-
30 août 2006 à 02:09
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023
-
30 août 2006 à 21:59
On y explique notamment comment se servir d'images avec un jar
exécutable. Mais j'ai essayé et peut etre que je m'y prend mal mais ça
marche pas.
En gros voilà mon problème:
J'ai fait un programme qui utilise une image qui est dans le meme
dossier (à la racine) que le programme. En dehors du jar ça fonctionne
évidemment. Mais quand je tente d'utiliser le jar exécutable, il ne
trouve pas l'image.
Que dois-je mettre exactement dans mon class-path si mon image s'appelle ah.jpg.
il me semble comprendre que l'on doit mettre les fichiers qu'on utilise
(mon image en l'occurence) dans un fichier jar?? j'ai également essayé
mais ça n'a pas marché chez moi. j'ai mis mon image dans un fichier jar
puis dans mon manifest j'ai mis: "Class-Path: ./archive.jar" mais ça na
pas marché non plus.
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 30 août 2006 à 09:40
Salut,
Pour les deux solutions ci-dessous ce que tu fais dans le manifest est innutile
1 - si tu mets des images dans un jar externe il te faut le voir comme un gros ZIP et recupéré dynamiquement les images dedans ce qui en soit n'est franchement pas complex à réaliser, il y a quelques exemples dessus sur le net!
2 - si tu le met dans le meme jar que celui contenant tes classes voici un exemple (ne met jamais de \ pour séparer un chemin vu qu'il est assimilable à une URL)
exemple admettons le jar toto.jar et dedans tu as les répertoires suivant images/png/ contenant l'image toto.png
dans ton code tu devra proceder comme suit pour une methode non static :
URL url = getClass().getClassLoader().getResource("images/png/toto.png");
Image img = Toolkit.getDefaultToolkit().createImage(url);
et pour une classe static :
URL url = NomDeLaClasseCourrante.class.getClassLoader().getResource("images/png/toto.png");
Image img = Toolkit.getDefaultToolkit().createImage(url);
sinon tu peux passer par le system :
URL url = ClassLoader.getSystemClassLoader().getResource("images/png/toto.png");
Image img = Toolkit.getDefaultToolkit().createImage(url);
NOTE:
si tu veux récuperer un fichier se trouvant dans ton jar il ne faut pas passer par getResource mais par getResourceAsStream
exemple pour le fichier toto.txt se trouvant dans le répèrtoire fichiers/texte de ton jar toto.jar
toto.jar
|
------->fichiers
|
------->texte
|
------->toto.txt
dans ton code tu devra proceder comme suit pour une methode non static :
InputStream is = getClass().getClassLoader().getResourceAsStream("fichiers/texte/toto.txt");
et pour une classe static :
InputStream is = NomDeLaClasseCourrante.class.getClassLoader().getResourceAsStream("fichiers/texte/toto.txt");
sinon tu peux passer par le system :
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("fichiers/texte/toto.txt");
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
bourgi220
Messages postés21Date d'inscriptionsamedi 27 mars 2004StatutMembreDernière intervention30 août 2006 30 août 2006 à 20:41
merci beaucoup pour ta réponse... ça marche nickel maintenant!
Mais je rencontre un nouveau problème, je n'arrive pas à écrire dans un
fichier txt qui est dans mon jar... j'ai fait des recherches qui disent
que c'est impossible... est-ce vrai?