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

Entrée/Sortie Java Discussion :

Recupération une resource dans un JAR


Sujet :

Entrée/Sortie Java

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut Recupération une resource dans un JAR
    Bonjours.

    Après de multiple lecture et essaye, je n'arrive pas a récupérer des ressources contenu dans un jar.

    J'ai une application qui a besoin d'imageIcon contenu dans le package.


    Mon package est constitué comme suit :
    - module qui contient la classe principale,
    - module/calcul qui contient la classe qui utilise la ressource
    - data/images qui contient les icônes.

    Comment je fais pour charger l'icône.

    J'ai testé le code de la FAQ, et le code qui est 10-20 topic plus bas !!! Mais sans succès.

    Enfin, le code ainsi utilisé marchera t'il directement lors du lancement sous éclipse ou dois je a chaque fois générer le JAR.
    Pour lancer le JAR, je fais directement en double cliquant dessus, donc je ne sais pas ce qu'il met dans le classPath.

    Merci

  2. #2
    Membre expérimenté Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Points : 1 371
    Points
    1 371
    Par défaut
    Comment fais tu pour lui spécifié ton image pour l'image icon?

    As tu essayé avec un ClassLoader??

  3. #3
    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,


    Quel code utilises-tu précisément ?


    a++

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    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
    			try
    			{
    								getClass().getClassLoader().getResource( "Trident_2_02c.jar" );
    			    String path = getClass().getName() + ".class";
    			    String path2 = "icoArcanne.GIF";
    			    URL url = getClass().getResource(path2);
    			    path = URLDecoder.decode(url.toString(), "UTF-8");
     
     
    				l_iconArcanne = new ImageIcon(path);
     
    			    System.out.println("Répertoire contenant la classe: " + path);
    			    m_textTech.setText("Répertoire contenant la classe: \n- " + path + "\n- " + path2 + "\n" + url);
     
    			}
    			catch(Exception e)
    			{
    				System.out.println("Probleme");
    				l_iconArcanne = new ImageIcon();
    				m_textTech.setText("Probleme");
    			}
    voila, l'idée est de charger le GIF !!!

  5. #5
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Tu peux juste essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    try {
    ImageIcon imageIcon = new ImageIcon(this.getClass().getRessource("data/images/icoArcanne.GIF"));
    } catch (Exception e) {
    e.printStackTrace();
    }
    et nous donner l'exception qui est levée s'il y en a une ?

    Si c'est le cas, es-tu sûr de la casse du nom de ton fichier d'icône ? (c'est dans un jar, donc accédé par Java, donc sensible à la casse)

    P.S. : respecter les conventions de nommage en Java, c'est bien

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    j'arrive pas a chopper la console java sur le pc.
    J'ai essayé dans panneau de conf -> java -> afficher console, mais j'ai pas les droits admin.

    On ne peux pas recupérer le texte de l'erreur ? Car j'ai tenté avec m_textTech.setText(e.getMessage()); mais ca me marque rien. pour tant j'y passe !!!

  7. #7
    Membre averti Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Points : 437
    Points
    437
    Par défaut
    et si tu essayais "programmes files->accesoires->cmmand prompt" (une petite icone noir du DOS) ?

    puis tu vas dans le dossier qui contient le jar et tu fais :
    la je pense que ça va donner l'erreur.

    a+

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    Oui effectivement !!! (la féniantise a jamais eu du bon !!! Meme pas savoir executer un jar sous dos !!!)

    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
     
    D:\crocis\Personnel>java -jar trident_2_02c.jar
     
     
     
     
     
     
     
     
    Debut programme
    java.lang.NullPointerException
            at javax.swing.ImageIcon.<init>(Unknown Source)
            at modules.calculs.panel.JPanelTechnique.initialisationInterface(JPanelTechnique.java:94)
            at modules.calculs.panel.JPanelTechnique.<init>(JPanelTechnique.java:82)
            at modules.calculs.panel.JPanelCalculs.ajouterOnglet(JPanelCalculs.java:97)
            at modules.calculs.panel.JPanelCalculs.initInterface(JPanelCalculs.java:60)
            at modules.calculs.panel.JPanelCalculs.<init>(JPanelCalculs.java:40)
            at modules.calculs.Calculs.<init>(Calculs.java:21)
            at modules.Trident_2_xx.initialiserInterface(Trident_2_xx.java:55)
            at modules.Trident_2_xx.<init>(Trident_2_xx.java:45)
            at modules.Trident_2_xx.main(Trident_2_xx.java:75)
     
    Fin programme
     
    D:\crocis\Personnel>
    a paremment la variable est a null !!!

  9. #9
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Ca correspond à quoi "JPanelTechnique.java:94" ?

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    ImageIcon imageIcon = new ImageIcon(this.getClass().getRessource("data/images/icoArcanne.GIF"));

    A priori il ne trouve pas la resource !!!

    Mais c'est peu être normal car comment il fait pour remonter de 3 repertoires ? C'est possible !!!

    Je vais tester en mettant l'image direct dans le repertoire.

    edit : en faisant une copie de l'image dans le repertoire de ma classe, sous eclipse ca marche, mais pas en JAR.

  11. #11
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Oups je me suis trompé... Je voulais te demander d'essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ImageIcon imageIcon = new ImageIcon(this.getClass().getRessource("/data/images/icoArcanne.GIF"));

  12. #12
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 121
    Points
    121
    Par défaut
    parfait c'était ca !!!


    Donc le chemin commence d' l'origine du fichier, avec un / au début !!!



    Merci.

    Cela marche donc pour toutes les resources contenu dans le jar ?!

  13. #13
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Dans la javadoc de getResource() :
    If the name begins with a '/' ('\u002f'), then the absolute name of the resource is the portion of the name following the '/'.

  14. #14
    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 croc14
    Donc le chemin commence d' l'origine du fichier, avec un / au début !!!
    Cela correspond à un chemin complet dans le CLASSPATH. Sinon c'est un chemin relatif par rapport à la classe courante...

    Mais tout ceci est indiqué dans la FAQ : Comment charger une ressource présente dans le CLASSPATH (répertoire ou jar) ?

    a++

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/07/2006, 10h32
  2. methode pour exécuter une class dans un jar
    Par yann_p dans le forum Langage
    Réponses: 2
    Dernier message: 18/04/2006, 17h47
  3. exécuter une classe dans un jar a partir d'une methode java
    Par yann_p dans le forum API standards et tierces
    Réponses: 13
    Dernier message: 13/04/2006, 15h50
  4. Réponses: 5
    Dernier message: 11/04/2006, 16h39
  5. comment recupérer une valeur dans un datagrid
    Par budylove dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 23/02/2006, 17h04

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