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

Java Discussion :

Différence de comportement après transformation en JAR


Sujet :

Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 30
    Par défaut Différence de comportement après transformation en JAR
    Bonsoir,

    je viens de transformer un de mes programmes en .jar,
    et à l'éxècution une erreur se produit alors qu'il n'y en avait pas quand je l'éxècutais à partir d'eclipse, elle se situe au niveau d'un listing de repertoire que je parcours
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    files = directoryToScan.listFiles(); 
    for(int i = 0;i<files.length;i++) ...
    Exception in thread "main" java.lang.NullPointerException
    J'imagine que cela signifie que la liste de fichier est vide, mais pourquoi ?
    pourtant sous eclipse cela marche correctement ...

  2. #2
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    Bonsoir,

    Pourrais tu mettre tout ton code s'il te plait ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 30
    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
     
    		File[] files = null; 
    		File[] liste_final = null;
    		ArrayList<File> liste_f = new ArrayList<File>();
    		File directoryToScan = new File(directoryPath); 
    		files = directoryToScan.listFiles(); 
    		System.out.println(directoryToScan.getAbsolutePath());
    		if (directoryToScan.exists())
    		System.out.println("Il existe.");
    		else
    		System.out.println("Il n'existe pas!");
    		for(int i = 0;i<files.length;i++)
    			listerFichiers(files[i],liste_f);
    		liste_final = new File[liste_f.size()];
    j'ai fait quelques petits test le getAbsolutePath() me renvoit bien le bon path.
    par contre, sous eclipse j'ai "il existe" et en .jar "il n'existe pas" ...
    Je ne comprends vraiment pas cette différence de comportement le directoryPath étant un String qui correspond au chemin de repertoire que je passe en paramètre.

  4. #4
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    Ton directorypath, lui passe tu une valeur par défaut ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 30
    Par défaut
    euh non, je lui envoie un string taper à la main comme F:\Client par exemple.
    il est initialisé comme cela : String repertoire;
    et j'ai un switch qui dans 2 cas différents fait un readLine() pour pouvoir entrer le nom

  6. #6
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    ok donc peux tu deja mettre une valeur par defaut et retester.

    Je pense que ton soucis viens de la.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 30
    Par défaut
    je viens de tester en mettant :
    String repertoire = "C:\\Documents and Settings\\user\\Mes documents";
    en paramètre par défaut, mais le problème persiste...
    Pourquoi pensais-tu que l'erreur venait de là ?

  8. #8
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    Je pense que le probleme pourrait venir d'ici puisque tu as un nullpointer donc une valeur qui est à null.

    As tu tester different format de path ?
    c://documents...
    c:/documents...

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 30
    Par défaut
    toujours pas ...
    ce qui m'enerve, c'est qu'il marche pourtant bien quand je le lance par eclipse ... et la pouf, ça ne marche plus.

  10. #10
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    Je viens de faire un test avec ton code à peine modifier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    File[] files = null;
            File[] liste_final = null;
            ArrayList<File> liste_f = new ArrayList<File>();
            File directoryToScan = new File("/Users/developpez.net/Documents/Development/WorkSpaces Java SE/Developpez.net/ApplicationFiles/");
            files = directoryToScan.listFiles();
            //System.out.println(directoryToScan.getAbsolutePath());
            if (directoryToScan.exists())
            System.out.println("Il existe.");
            else
            System.out.println("Il n'existe pas!");
            for(int i = 0;i<files.length;i++)
            //listerFichiers(files[i],liste_f);
            liste_final = new File[liste_f.size()];
    Et ceci fonctionne.

    Le path que je lui donne en dur est different de celui sous windows puisque je suis sous mac. Mais le principe est le même.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 30
    Par défaut
    en fait, je viens de me rendre compte que ce n'est pas le .jar,
    mais le fait d'exécuter le programme sous CMD qui le fait planter. Quand j'exécute directement les .class, j'ai la même erreur.

  12. #12
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    Oui.
    C'est la raison pour laquelle je te demandais de mettre un path en dur.

    Je pense qu'une fois un path correct inserer tu pourras l'utiliser.

    Pour connaitre le path correct à inserer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            File directory = new  File ("./");
            System.err.println(directory.getAbsolutePath());
    Ensuite tu copies en sortie console le path qu'il t'a sortie et le met en dur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
         File directoryToScan = new File("/Users/developpez.net/Documents/Development/WorkSpaces Java SE/Developpez.net/ApplicationFiles/");
    Et la, normalement, ceci marche.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 30
    Par défaut
    j'ai appliqué ce que tu m'as dit, en faisant cela j'obtiens F:\Client\.
    j'ai taper ça dans le directoryToscan et il le trouve, cela fonctionne.
    Mais comment je fais si je veux scanner ce repertoire la ? C:\Mes fichiers reçus

  14. #14
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    Il te suffit normalement d'entrer : C:\Mes fichiers reçus
    Essaie et dis moi

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 30
    Par défaut
    quand je le met directement comme ça c:\mes fichiers reçus cela ne fonctionne pas ... je dois faire quelques choses avec le File directory = new File("./") ? Car, je l'ai enlevé, je n'en voyais pas trop l'utilité

  16. #16
    Membre Expert
    Avatar de X-plode
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2005
    Messages
    682
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2005
    Messages : 682
    Par défaut
    le File directory = new File("./") avait simplement une utilité quand je voulais faire le test de connaitre le path.

    Ainsi, a la racine du dossier courant, il me permettait d'etre sur du path courant de l'application pour ainsi commencer à tester la bon fonctionnement des recherches par le nom de fichier dans le dossier courant.

    Avez vous tester avec d'autres dossiers sans caractère spéciaux ?

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/07/2014, 16h51
  2. [XSLT] XML-->XSLT output format apres transformation avec un x
    Par Hoegaarden dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 06/09/2010, 11h51
  3. [Débutant], [Swing], transformé en .jar
    Par JavaBien69 dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 14/09/2005, 16h01
  4. [JFrame] Explication sur une différence de comportement
    Par jems dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 06/07/2005, 09h23
  5. sauvegarde d'un fichier apres transformations
    Par tigana dans le forum OpenGL
    Réponses: 5
    Dernier message: 18/05/2005, 10h01

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