Probleme chemin fichier [Résolu]

Signaler
Messages postés
211
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
15 mars 2013
-
Messages postés
211
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
15 mars 2013
-
bonjour,


A ta place, je créerais un nouveau dossier source dans lequel je refais l'arborescence des packages de ton dossier initial et dans la classe ou tu as besoin de ton image, tu tapes

Code Java :

ImageIO.read(getClass().getResource("IMM.PNG")



Ça te permettra de ne pas t'embêter avec les chemins et tu pourras exporter ton projet plus facilement.

si vous vous rappelez de cette reponse que j'ai recu de Julien39 (je le remercie )

tu as raison lorsque j'ai fait le jar si je l'execute pas dans le repertoire du projet les images ne s'affiche pas
mais meme cette methode franchement ca ne ma pas marché
la preuve :
j'ai tlechargé le selecteur d'image de Julien39 qui contient ca voila un extrait :
public Lanceur(){
try {
images.add(ImageIO.read(getClass().getResource("bleu.JPG")));
images.add(ImageIO.read(getClass().getResource("gris.JPG")));
images.add(ImageIO.read(getClass().getResource("jaune.JPG")));
images.add(ImageIO.read(getClass().getResource("noir.JPG")));
images.add(ImageIO.read(getClass().getResource("rose.JPG")));
images.add(ImageIO.read(getClass().getResource("rouge.JPG")));
images.add(ImageIO.read(getClass().getResource("vert.JPG")));
} 
catch (IOException e) {
e.printStackTrace();
}
}

je l'ai importé dans eclipse
mais il me genere cette erreur concernat le chemin
la voila :
Exception in thread "main" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)
at fr.julien.imageswitcher.lanceur.Lanceur.(Lanceur.java:21)
at fr.julien.imageswitcher.lanceur.Lanceur.main(Lanceur.java:35)

la ligne 21 est :
images.add(ImageIO.read(getClass().getResource("bleu.JPG")));


merci

10 réponses

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
296
C'est vrai que cette façon de faire fonctionne et possède certains avantages (les mêmes que de créer un nouveau dossier sources et de faire getClass().getRessource()). Cependant, il existe de nombreux désavantages (pour les deux méthodes) une fois le .jar créé :

- Tu ne pourras pas modifier les ressources du dossier ressources puisqu'elles auront été compressées dans le .jar

- Tu ne pourras pas non plus ajouter des ressources pour la même raison

Tu peux alors exporter le dossier ressources dans un dossier à part et là, tu te retrouves dans un cas ou pour fonctionner le .jar a besoin de savoir ou se trouve le dossier ressources. Dans ce cas la le mieux est d'utiliser des chemins absolus et de spécifier systématiquement un chemin vers un répertoire d'installation qui contient une arborescence spécifique que l'on peut définir (Par exemple vers C:\Program files\NomDeTonAppli).

Et ensuite, tu créés un logiciel d'installation avec InstallAnyWhere ou équivalent.
Messages postés
211
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
15 mars 2013
7
cayé
j'ai trouvé il faut que le repertoire qui contien les images soit un repertoire source

ou l'ajouter au java built path sources

merci
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
296
Bonjour,

Bon, tu as résolu ton problème tout seul. Je ne te serai donc d'aucune utilité.

Oui, c'est vrai que quand tu fais getClass().getRessource(), tu accèdes à une ressource qui se trouve dans le même package que la classe courante.

Pour ne pas mélanger code et images, on peut créer un nouveau dossier source qui s'appelle images et qui contient toutes les images, mais il faut veiller à placer les images dans le meme package que la classe qui les appellent.
Messages postés
39
Date d'inscription
vendredi 27 février 2009
Statut
Membre
Dernière intervention
26 septembre 2011
1
Messages postés
211
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
15 mars 2013
7
c'est pas votre message c'est du Icarius44
n'est ce pas
Messages postés
39
Date d'inscription
vendredi 27 février 2009
Statut
Membre
Dernière intervention
26 septembre 2011
1
Je parle de mon dernier message dans ce fil, en bas, dans les réponses, écrit le le 25/03/2009 à 09:14:47
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
296
Le message en question est le suivant :

En fait, amha le plus clean c'est :
1) créer un nouveau "Source Folder" dans le projet (dans le menu du clic-droit sur le projet, depuis le package explorer par exemple), appellé "resources" (puisqu'on peut y mettre autre chose que des images, en fait)
2) y importer (clic droit sur ce nouveau répertoire, "Import...") les fichiers voulus depuis un répertoire "neutre" (= non situé dans le Javaworkspace)
3) si on ajoute "à la main" (= depuis l'extérieur d'Eclipse) des fichiers dans le répertoire "resources", il faudra faire "Refresh" dans le projet pour que tout soit synchro.
4) on accède auxdites ressources par un nom de forme "/"+nomFichier

En fait Eclipse va placer à la compilation les fichiers dans [projet]/bin, ce qui permettra de faire tourner l'appli depuis Eclipse, et dans le .jar quand on exportera l'appli.
Messages postés
39
Date d'inscription
vendredi 27 février 2009
Statut
Membre
Dernière intervention
26 septembre 2011
1
Il me semble qu'il y a même moyen d'ajouter et/ou de modifier dans le jar non ? Je n'ai jamais vraiment utilisé à fond, mais il y a <link>http://download.oracle.com/javase/7/docs/api/java/util/jar/package-summary.html</link>
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
296
Je me suis mal exprimé, tu peux modifier le contenu du .jar mais, ce n'est pas un fonctionnement acceptable pour l'utilisateur. Celui-ci préfère ouvrir un dossier et lire les fichiers qu'ils contient, modifier et enregistrer. Ce qui n'est pas possible avec un jar.

On ne voit d'ailleurs pas de programme dans lesquels tu peut modifier les fichiers de config contenu dans un jar.

De plus, c'est de la modification d'un programme exécutable ce qui n'est pas toujours légal, ca pourrait être utilisé comme un moyen de contourner les DRM par exemple. Il existe d'ailleurs des logiciels qui servent à "pourrir" ton fichier .jar pour éviter que celui ci soit décompilé.

Et enfin, ca pose un énorme problème de mise à jour. En effet, si ton programme est constitué d'un ensemble de fichiers de config et d'un jar exécutable, la mise à jour est simple, il suffit d'écraser le .jar. En revanche, si les fichiers de paramètre sont à l'intérieur du jar, tu écrases systématiquement la configuration courante et la taille de tes mises à jour peut être beaucoup plus importante.
Messages postés
211
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
15 mars 2013
7
je m'exuse a fautchmane
j'ai pas vu en bas