IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Eclipse Java Discussion :

Un jar avec des ressources graphiques inaccessibles une fois exportées


Sujet :

Eclipse Java

  1. #1
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut Un jar avec des ressources graphiques inaccessibles une fois exportées
    Bonjour,

    J'ai établi une arborescence qui ressemble à ceci dans mon projet:
    jTestAppli-2
    +src
    ++(defalt package)
    +++Form.java
    ++jGeeksOutils
    +++Window.java
    ++icones
    +++img_001.png
    Quand je code et que je teste mon application (via run), tout se passe à merveille mais quand j'exporte, et bien que les images sont au bon endroit, elles restent invisibles.

    J'ai tenté de faire le chemin en relatif, idem aucune image.
    Soit l'export n'est pas correcte (et là NetBeans sait faire), soit il y a une option qu'il faut utiliser et que je n'ai pas trouvé, ou alors il faut que je change mon code pour quelque chose de plus correct et qui fonctionne dans les deux cas.

    Pour information, voici les codes de Form.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    import javax.swing.JFrame;
    import javax.swing.ImageIcon;
     
    import jGeeksOutils.*;
    /**
     * @author Geeks
     */
    public class Form {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
     
    		JFrame win = new Window();
     
    		win.setTitle("Test");
    		win.setIconImage(new ImageIcon("src/icones/img_001.png").getImage());
    		win.setVisible(true);
    	}
     
    }
    Et les codes de window.java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    package jGeeksOutils;
     
    import javax.swing.JFrame;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowListener;
     
    /**
     * Classe de création de fenêtre
     * @author Geek
     */
    public class Window extends JFrame {
     
    	/**
             * Dérialisation
             */
    	private static final long serialVersionUID = 3305881921011508226L;
     
    	/**
             * Constructeur
             */
    	public Window() {
    		setBounds(0, 0, 200, 300);
     
    		WindowListener l = new WindowAdapter() {
    			public void windowClosing(WindowEvent e) {
    				System.exit(0);
    			}
    		};
     
    		addWindowListener(l);
    	}
    }
    Quelqu'un pourrait-il m'expliquer ce qui ne va pas ?

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Le problème vient du fait que tu ne manipules pas des ressources mais des fichiers en local :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new ImageIcon("src/icones/img_001.png")
    Avec ce code, tu cherches à ouvrir le fichier src/icones/img_001.png par rapport au répertoire courant.

    Lorsque tu exécutes depuis eclipse il trouve bien le fichier correspondant.

    Par contre une fois en JAR ce fichier n'existe pas pour le système d'exploitation, et donc il ne peut pas l'ouvrir. La classe ImageIcon ne générant pas d'erreur dans ce cas car elle charge l'image en arrière-plan (contrairement à ImageIO.read() par exemple).



    Pour éviter cela il faut penser "ressource" et donc passer par le classpath :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new ImageIcon(getClass().getResource("/icones/img_001.png"))

    a++

  3. #3
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Pour éviter cela il faut penser "ressource" et donc passer par le classpath :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new ImageIcon(getClass().getResource("/icones/img_001.png"))
    J'ai déjà essayé cette solution sans succès, car mon code est dans une méthode static.

    Ensuite j'ai été voir le bin mais il n'est en rien l'image de mon projet. Je réitère dans l'idée qu'Eclipse est incapable de faire un export correct...

    En trifouillant le classpath, je suis arrivé à mettre la ressource à l'identique.

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Microbulle Voir le message
    J'ai déjà essayer cette solution sans succès, car mon code est dans une méthode static
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LeNomDeMaClasse.class.getResource();
    Citation Envoyé par Microbulle Voir le message
    Je réitère dans l'idée qu'Eclipse est incapable de faire un export correct...
    C'est tellement plus facile de mettre tous les problème sur le dos de l'EDI...

    Citation Envoyé par Microbulle Voir le message
    En trifouillant le classpath,


    C'est à dire ???


    a++


    Petit HS : Si tu veux du sérieux et être sûr de ce que tu fais : un petit VI et la ligne de commande fera l'affaire

  5. #5
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Je viens d'essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    win.setIconImage(new ImageIcon(Form.class.getResource("/icones/img_001.png")));
    Sans succès !

    Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    The method setIconImage(Image) in the type JFrame is not applicable for the arguments (ImageIcon)

    at Form.main(Form.java:22)

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Le getImage() a disparu...

    a++

  7. #7
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Le getImage() a disparu...

    a++
    Ce qui veut dire ?

    Soit je le prends comme : il faut ajouter le getImage(), soit il n'existe plus mais il faudrait une raison.

    Merci !

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Le message d'erreur indique un problème de type incompatible entre Image et ImageIcon.

    Dans le premier code que tu donnais, tu utilisais la méthode getImage() pour récupérer un objet Image depuis l'ImageIcon. Ce que tu ne fais apparemment plus...


    a++

  9. #9
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Donc il faudrait que je le rajoute

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/10/2010, 07h52
  2. Exporter en un fichier jar exécutable avec des ressources
    Par Marvelll dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 04/06/2010, 14h38
  3. une page jsp avec des controles graphique dynamiques
    Par capello123 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 14/12/2007, 16h37
  4. [JAR]Création d'un JAR avec des dependances sous Eclipse
    Par muthnik dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 05/07/2005, 17h39
  5. Réponses: 6
    Dernier message: 24/02/2005, 09h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo