Florenzau
Messages postés29Date d'inscriptionvendredi 3 juin 2005StatutMembreDernière intervention 8 février 2012
-
3 févr. 2012 à 09:28
Florenzau
Messages postés29Date d'inscriptionvendredi 3 juin 2005StatutMembreDernière intervention 8 février 2012
-
8 févr. 2012 à 09:59
Bonjour,
Je développe une application web en Java (donc une applet) qui utilise une librairie contenant des images.
La librairie est une couche graphique basée sur des JPanels avec images.
Pour utiliser la librairie, je créé une archive JAR, et je l'inclus dans mon projet web Eclipse.
Problème, les images ne se chargent pas.
Librairie :
|-src/*.java
|-res/*.png
->Génère une archive : librairie.jar
Web Projet :
|-src/*.java
|-librairie.jar
->Génère une archive : WebProject.jar et un point d'entrée : WebApp.class
Première solution:
J'ai essayé de copier/coller les images dans le projet web et ça fonctionne (sous Eclipse), mais le problème est lors du portage sur le web, le chemin absolu du programme devient celui du navigateur (ex: c:\Program Files\Mozilla Firefox).
Du coup, l'accès relatif aux images ne fonctionne plus (sauf si les images sont aussi stockées dans Program Files, ce qui n'est pas bon du tout).
Donc deuxième solution:
J'ai lu pas mal de tutos et de forum qui traitent de la démarche à suivre pour insérer des images dans une archive JAR mais pour s'en servir ensuite, je galère...
Je n'arrive pas à faire en sorte que mon projet Web utilise les images contenues dans l'archive Librairie.jar.
J'utilise bien
imgURL = maClasse.class.getResource("Chemin relatif de mon image par rapport à la classe");
monImage = ImageIO.read(new File(imgURL.getPath());
Quand sous Eclipse, je lance une application de test au sein de la librairie, mes images se chargent.
Quand sous Eclipse, je lance le projet web qui utilise la librairie, rien ne va plus.
Florenzau
Messages postés29Date d'inscriptionvendredi 3 juin 2005StatutMembreDernière intervention 8 février 2012 7 févr. 2012 à 16:02
Bonjour,
Merci pour ta réponse.
Ta première solution n'est pas viable, l'applet s’exécute sur un PC distant. Les images ne sont pas stockées sur le pc client, elles doivent donc êtres dans le jar.
J'ai bien essayé la seconde solution, en respectant scrupuleusement les étapes du lien que tu m'as fournis mais en vain.
Les images insérées dans le jar de ma librairie ne sont pas chargées par les contrôles.
Les contrôles sont pourtant définis dans cette même librairie.
Florenzau
Messages postés29Date d'inscriptionvendredi 3 juin 2005StatutMembreDernière intervention 8 février 2012 7 févr. 2012 à 16:37
Merci du soutien :-)
J'ai essayé en mettant tout le monde dans le même répertoire.
/src/
MonBouton.java
btn-normal.png
Constructeur du contrôle de la bibliothèque:
public void MonBouton()
{
// Récuperation des images
java.net.URL imageURL;
try
{
imageURL = MonButton.class.getResource("btn-normal.png");
System.out.println("Path:"+imageURL.getPath());
imgNormal = ImageIO.read(new File(imageURL.getPath()));
}
catch (IOException e)
{
e.printStackTrace();
}
}
//... Plus loin, la méthode de déssin utilise imgNormal (BufferedImage) pour dessiner l'image
- Quand je teste la librairie (avant le jar) ça fonctionne, mon image est bien chargée :
Path:/S:/PROJETS/ClientApp/src/JAVA/librairie/src/btn-normal.png
- J'exporte la librairie (quand je regarde dedans avec Winrar, elle contient bien les images dans le bon dossier).
- Dans mon programme, quand j'appelle la création de mon contrôle qui utilise l'image, voici ce que j'observe:
Path:file:/S:/PROJETS/ClientApp/src/JAVA/applet/src/LIBRAIRIE.jar!btn-normal.png
javax.imageio.IIOException: Can't read input file!
at javax.imageio.ImageIO.read(Unknown Source)
at MonBouton.(MonBouton.java:111)
at MainPanel.(MainPanel.java:73)
at WebApplet.init(WebApplet.java:31)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Et l'image ne se charge pas.
Il y a surement une erreur de chemin ou quelque chose, car c'est censé fonctionner.
Une idée?
Merci encore
Vous n’avez pas trouvé la réponse que vous recherchez ?