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 :

Chemin dossier Ajouter au Package


Sujet :

avec Java

  1. #1
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut Chemin dossier Ajouter au Package
    Bonjour,
    J'ai ajouté un dossier images dans mon package.
    Je me sers de ce code pour accéder aux images qu'il contient
    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
        public void setadresse(String ad,String nom,String image){
            String img = null;
            String Chemin = null;
            try{            
                Chemin = getClass().getResource("images/"+image+".png").getPath();
                File test_img = new File(Chemin);
                    if(test_img.exists()){
                        img = "images/"+image+".png";
                    }else{
                         img = "images/AUTRE.png";
     
                    }                    
                }catch(Exception ex){
                    img = "images/defaut.png";              
                }
            invokeJS("codeAddress('" + ad + "', '" + nom +"', '" + img +"')");
        }
    Quand je lance avec netbeans aucun soucis; les images s'affichent par contre dés que je compile quand je lance mon fichier.jar la je n'ai que l'image defaut.png.
    Voici le code de InvokeJs
    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
    private void invokeJS(final String str) {
            if(ready) {
                doc.eval(str);
            }
            else {
                webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>()
                {
                    @Override
                    public void changed(final ObservableValue<? extends Worker.State> observableValue,
                                        final Worker.State oldState,
                                        final Worker.State newState)
                    {
                        if (newState == Worker.State.SUCCEEDED)
                        {
                            doc.eval(str);
                        }
                    }
                });
            }
        }
    et je mets aussi le javascript
    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
     function codeAddress(ad,nom,img) {
              var address = ad;
              var image = img;
              geocoder.geocode( { 'address': address}, function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                  map.setCenter(results[0].geometry.location);
                  var marker = new google.maps.Marker({
                      map: map,
                      position: results[0].geometry.location,
                      title: nom,
                      icon: image
                  });
     
                  markers.push(marker);
     
                }
    Je ne pense pas que se soit un problème de la fonction "InvokeJs" ni du javascript car l'image défaut s'affiche ce qui implique que le javascript a accès au dossier contenant les images.(Image "defaut" est dans le même dossier que les autres).
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Hello,

    ta situation n'est pas très claire.
    Ce que je ne comprends pas, c'est comment il est possible d'avoir simultanément :

    • Tu as mis tes images dans un dossier de ton package,
    • Tu as mis ton package dans un fichier .jar et tu lances ton programme avec ça,
    • Tes images sont ailleurs que dans ce fichier .jar


    Logiquement, si tes images sont dans ton package, et que tu mets ton package dans un .jar, alors tes images sont dans ce .jar.
    Comment quelque chose d'autre a-t-il pu arriver, et quelle était la logique de ça ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut
    Voila une petite photo Nom : dossier.png
Affichages : 103
Taille : 22,1 Ko

    Mes images sont dans web2.pkg0.images.
    Avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getClass().getResource("images/"+image+".png").getPath();
    j'y accéde quand sous netbeans je fait run project.
    Par contre ce code ne fonctionne plus quand je fait un Build pour deployer mon appli.
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  4. #4
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut,
    essaie de mettre un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    catch(Exception ex){
                    System.out.println(ex.getMessage());
                    img = "images/defaut.png";              
                }
    et tu nous donnes ce qui est affiché.

    Eric

  5. #5
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut
    Citation Envoyé par jeffray03 Voir le message
    salut,
    essaie de mettre un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    catch(Exception ex){
                    System.out.println(ex.getMessage());
                    img = "images/defaut.png";              
                }
    et tu nous donnes ce qui est affiché.

    Eric
    Salut ça ne donne rien car en mode "run" aucun problème. C'est juste quand je compile pour distribuer que ça ne fonction pas.
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  6. #6
    Membre chevronné
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Tu es sûr que des fichiers image sont bien DANS ton jar une fois packagé?
    Rajoute la ligne de log dans le catch, package ton programme et lance-le pour savoir quelle est l'erreur précisément.


    J'essayerai bien aussi de mettre le chemin complet du path vers ton "répertoire" contenant les images : "/web2/pkg0/images/xxxx.png"
    Je ne suis pas mort, j'ai du travail !

  7. #7
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut
    Salut,
    renvoi null
    Tu es sûr que des fichiers image sont bien DANS ton jar une fois packagé?
    Oui car defaut.png est stocké au même endroit et c'est la seule qui apparait ce qui veux dire que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Chemin = getClass().getResource("images/"+image+".png").getPath();
                File test_img = new File(Chemin);
                    if(test_img.exists())
    renvoi null une fois compilé alors que en mode "run" cela fonctionne.
    Cela me laisse un brin perplexe.
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  8. #8
    Membre chevronné
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Si tu as ajouté la ligne au bon endroit, ex.getMessage() ne PEUT PAS renvoyer null (EDIT : je viens de comprendre : null est le contenu du getMessage... Qui signifie la présence d'un null pointer exception... Besoin d'un café. Donc oui, ça peut renvoyer null !)

    Essayes de compiler/packager/tester ça et dis nous ce que ça donne :
    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
     
    public void setadresse(String ad,String nom,String image){
            String img = null;
            String Chemin = null;
            try{            
                Chemin = getClass().getResource("/web2/pkg0/images/"+image+".png").getPath();
                File test_img = new File(Chemin);
                    if(test_img.exists()){
                        img = "images/"+image+".png";
                    }else{
                         img = "images/AUTRE.png";
     
                    }                    
                }catch(Exception ex){
                    System.out.println(ex.getMessage() + " " + ex);
                    img = "images/defaut.png";              
                }
            invokeJS("codeAddress('" + ad + "', '" + nom +"', '" + img +"')");
        }

    Sinon, une façon d'être sûr que des images sont bien packagées, c'est de dézipper le .jar et de voir si les images sont bien dedans.
    Je ne suis pas mort, j'ai du travail !

  9. #9
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut
    Salut,
    Quand je compile j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    null java.lang.NullPointerException
    seulement pour les images qui n'existent pas(donc affichage de Defaut.png) et les images existantes s'affichent. Quand je fais "clean et build" et double clique sur le Jar généré tout s'affiche en Defaut.png même celles qui s'affichent normalement en faisant le "run".
    J'ai extrait tous les fichiers du jar et les photos sont présentes.
    Question comment puis je avoir un retour dans la console(
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(ex.getMessage() + " " + ex);
    ) si je lance en double click sur mon jar.
    Autre question pour déployer mon appli juste besoin de clean et build et je recupere le dossier contenant :
    -mon fichier .jar
    -dossier lib
    -readme.txt
    ? ou alors je m'y prend mal.
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  10. #10
    Membre chevronné
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Le fait que tu aies un NPE quand tu recherches une image qui n'existe pas me rassure.

    Concernant cette question :
    Question comment puis je avoir un retour dans la console(
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(ex.getMessage() + " " + ex);
    ) si je lance en double click sur mon jar.
    En ne faisant pas un double click mais en lançant l'exécution en ligne de commande !

    la ligne de commande :
    java -jar <nom du jar>.jar

    Ca affichera directement le résultat du System.out

    Pour faire afficher les erreurs et les logs de manière plus propre, tu peux aussi ajouter un système de log (comme log4j qui permet d'écrire les logs dans des fichiers quel que soit le mode de lancement)


    Autre question pour déployer mon appli juste besoin de clean et build et je recupere le dossier contenant :
    -mon fichier .jar
    -dossier lib
    -readme.txt
    Il y a quoi dans ton dossier lib?
    Je ne suis pas mort, j'ai du travail !

  11. #11
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut
    Dans le dossier lib:
    mail.jar
    jsoup.jar
    etc...
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  12. #12
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    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
        public void setadresse(String ad,String nom,String image){
            String img = null;
            String Chemin = null;
            try{            
                Chemin = getClass().getResource("/web2/pkg0/images/"+image+".png").getPath();
                File test_img = new File(Chemin);
                    if(test_img.exists()){
                        img = "images/"+image+".png";
                    }else{
                         img = "images/AUTRE.png";
     
                    }                    
                }catch(Exception ex){
                    System.out.println(ex.getMessage() + " " + ex);               
                    img = "images/defaut.png";              
                }
            System.out.println(img);
            invokeJS("codeAddress('" + ad + "', '" + nom +"', '" + img +"')");
        }
    Voici ce que j'obtiens avec Netbeans
    images/4321A.png
    images/4321A.png
    images/4321A.png
    null java.lang.NullPointerException
    images/defaut.png
    null java.lang.NullPointerException
    images/defaut.png
    null java.lang.NullPointerException
    images/defaut.png
    images/4321A.png
    images/6831Z.png
    images/6810Z.png

    et avec mon fichier jar
    D:\Web2.0\dist>java -jar web2.0.jar
    images/AUTRE.png
    images/AUTRE.png
    images/AUTRE.png
    null java.lang.NullPointerException
    images/defaut.png
    null java.lang.NullPointerException
    images/defaut.png
    null java.lang.NullPointerException
    images/defaut.png
    images/AUTRE.png
    images/AUTRE.png
    images/AUTRE.png

    Ce qui montre que une fois compilé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Chemin = getClass().getResource("/web2/pkg0/images/"+image+".png").getPath();
                File test_img = new File(Chemin);
                    if(test_img.exists())
    renvoi toujours n'existe pas!
    Pour info voici ce qui sort pour chemin en passant en ligne de commande
    chemin : file:/D:/Web2.0/dist/Web2.0.jar!/web2/pkg0/images/4321A.png
    Est ce normal ! derrière le jar
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  13. #13
    Membre chevronné
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    En fait, l'exécution de ton code montre que
    - les fichiers sont trouvés (URL non nulle) que tu sois dans le jar ou dans netbeans
    - le Files.exists() renvoie false dans le jar (normal, tes fichiers sont zippés)


    Du coup, tu peux te contenter de vérifier si la méthode getClass().getResource("/web2/pkg0/images/"+image+".png") te renvoie autre chose que null. Si oui, c'est que le fichier existe dans le classpath.
    Je ne suis pas mort, j'ai du travail !

  14. #14
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut
    Ca marche merci beaucoup
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

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

Discussions similaires

  1. Retrouver Chemin Absolu d'un package
    Par ding0star dans le forum Langage
    Réponses: 2
    Dernier message: 04/05/2007, 16h57
  2. VBA excel Par bouton parcourir prendre chemin dossier
    Par raymoundo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/01/2007, 11h37
  3. Ajouter un package
    Par Mic75 dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 13/10/2006, 13h57
  4. [EXPORT] Comment ajouter des packages au .jar ?
    Par djskyz dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/08/2004, 23h23
  5. [Netbeans] Ajout de package?
    Par wjb dans le forum NetBeans
    Réponses: 3
    Dernier message: 17/05/2004, 15h41

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