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

avec Java Discussion :

Jar et Images


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mai 2004
    Messages : 46
    Points : 28
    Points
    28
    Par défaut Jar et Images
    Bonsoir,

    J'ai créé un une interface graphique dans laquelle j'utilise des images.

    J'ai créé dans eclipse un package contenant les sources de l'interface graphique et un dossier (pas un package) contenant les images. J'obtiens l'arborescence suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    src/
        fr.truc.bidule.gui
        fr.truc.bidule.gui.images
    Lorsque je dois utiliser une image, pour charger le chemin je procède de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    URL urlControlStop = this.getClass().getResource("images/control_stop.png");
    ImageIcon iconControlStop = new ImageIcon(urlControlStop.getPath(), "Control stop");
    Lorsque je lance l'application directement depuis le .class les images s'affichent correctement. Cependant lorsque je crée un jar avec Eclipse et que je le lance, l'interface graphique s'affiche mais les images non.

    Quelqu'un pourrait il m'expliquer pourquoi ?

    Merci.

    Cordialement,
    Laurent

  2. #2
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Tu devrais essayer d'ouvrir ton jar (c'est comme un zip) et vérifier que tes images sont dedans.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mai 2004
    Messages : 46
    Points : 28
    Points
    28
    Par défaut
    Je viens d'extraire le contenu du jar de la manière suivante :

    L'arborescence est la même que celle décrite ci-dessus et les images s'y trouvent

  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
    Salut,


    Dans ton code, this correspond bien précisément à une classe du package fr.truc.bidule.gui ?
    Sinon tu as vérifié qu'il n'y ait pas une différence de minuscule/majuscule dans le nom+extention du fichier ?

    a++

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mai 2004
    Messages : 46
    Points : 28
    Points
    28
    Par défaut
    Je viens de faire toutes les vérifications conseillées mais le problème persiste.

    Je viens donc de refaire en test en modifiant le package des image et en utilisant des chemins absolus.

    Sous Eclipse l'arborescence est celle correspondant à la pièce jointe "Image_3".

    Si j'affiche l'arborescence du jar :

    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
    34
    35
    36
    37
    fr/
    fr/unice/
    fr/unice/ops/
    fr/unice/ops/.DS_Store
    fr/unice/ops/core/
    fr/unice/ops/core/Direction.class
    fr/unice/ops/core/Statistics.class
    fr/unice/ops/core/package-info.class
    fr/unice/ops/core/Position.class
    fr/unice/ops/core/Pavement.class
    fr/unice/ops/core/Entity.class
    fr/unice/ops/core/Simulation.class
    fr/unice/ops/core/SimulationStatus.class
    fr/unice/ops/core/tests/
    fr/unice/ops/core/tests/EntityTest.class
    fr/unice/ops/core/tests/package-info.class
    fr/unice/ops/core/tests/PavementTest.class
    fr/unice/ops/core/tests/PositionTest.class
    fr/unice/ops/gui/
    fr/unice/ops/gui/SimulatorWindowEvent.class
    fr/unice/ops/gui/SimulatorMenubarEvent.class
    fr/unice/ops/gui/PavementView.class
    fr/unice/ops/gui/SimulatorToolbarEvent.class
    fr/unice/ops/gui/package-info.class
    fr/unice/ops/gui/StatisticsView.class
    fr/unice/ops/gui/SimulatorGUI.class
    fr/unice/ops/gui/OutflowPedestrianSimulator$1.class
    fr/unice/ops/gui/OutflowPedestrianSimulator.class
    fr/unice/ops/images/
    fr/unice/ops/images/.DS_Store
    fr/unice/ops/images/bullet_green.png
    fr/unice/ops/images/control_play.png
    fr/unice/ops/images/control_stop.png
    fr/unice/ops/images/control_suspend.png
    fr/unice/ops/images/icon.png
    fr/unice/ops/images/pedestrian_ltor.png
    fr/unice/ops/images/pedestrian_rtol.png
    Si je test si une ImageIcon est null ça me renvoie faux, donc à priori le chargement de l'image à marché. Cependant lors de l'affichage j'obtiens un programme ou les images ne sont pas affichées comme on peut le voir sur la pièce jointe "Image_6".

    Pour lancer ma classe principale j'utilise SwingWorker :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public static void main(String[] args) {
    		SwingUtilities.invokeLater(new Runnable() {
    			public void run() {
    				new SimulatorGUI();
    			}
    		});
    	}
    Bref, je suis vraiment perdu

    Si quelqu'un a une idée je lui en serait reconnaissant

    Merci.

    Cordialement,

    Laurent
    Images attachées Images attachées   

  6. #6
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Je vois pas comment ton chargement d'image peut marcher, avec ou sans eclipse : à ce que je vois, à la base du chemin que tu donnes pour les images il n'y a aucune classe, donc aucune image ne peut être la ressource d'une classe.

    Il faudrait que tu fasses par ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    URL urlControlStop = getClass().getResource("/fr/unice/ops/images/control_stop.png");

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mai 2004
    Messages : 46
    Points : 28
    Points
    28
    Par défaut
    Oui effectivement c'est ce que je viens dire plus haut, j'utilise des chemins absolus dans mes derniers tests, comme tu me l'as dit.

    En fait je viens de trouver d'où provient le problème. J'utilisais le constructeur de ImageIcon avec un chemin et pas une URL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ImageIcon iconControlSuspend = new ImageIcon(this.getClass().getResource("/fr/unice/ops/images/control_suspend.png").getPath(), "Control suspend");
    Sans le getPath() ça utilise le constructeur prenant une URL qui doit prendre en compte le dossier courant dans lequel se trouve le .jar. Ce qui n'était pas le cas avec le getPath().

    Merci pour votre aide.

    Cordialement,

    Laurent

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Un .Jar avec images
    Par Neotaxi dans le forum Langage
    Réponses: 11
    Dernier message: 07/05/2012, 12h02
  2. Problème exportation JAR avec images
    Par oliwan dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 22/06/2009, 20h08
  3. [JAR] Les images manquent
    Par doons dans le forum Général Java
    Réponses: 3
    Dernier message: 23/10/2008, 09h22
  4. Jar et images
    Par DidUngar dans le forum Débuter avec Java
    Réponses: 25
    Dernier message: 08/05/2008, 21h42
  5. [Applet][JTextPane][HTML]Accès a une image du JAR
    Par SamDaKap dans le forum Applets
    Réponses: 4
    Dernier message: 10/08/2004, 16h17

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