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 :

Repertoire courant différent du répertoire de lancement ?


Sujet :

Java

  1. #1
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut Repertoire courant différent du répertoire de lancement ?
    Bonjour,

    c'est une question bateau surement mais je ne trouve pas de réponse à mon pb.

    j'ai un petit jar executable. Quand je le lance j'ai une petite fenetre swing avec en particulier 2 champs de sélection de fichier. Et du coup un bouton permettant de parcourir l'arborescence.

    Mon collègue que utilise cet outil depuis un moment, me dis "qu'avant" le répertoire initial de l'explorateur (pour choisir le fichier) était le répertoire courant (celui du jar). mais que "maintenant", ce répertoire initial est C:\Documents and ...

    Hop je regarde dans le code (qui est de qqun d'autre) et je vois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jfc.setCurrentDirectory(new File(System.getProperty("user.dir")))
    A priori, le code devrait donner un JFileChooser commençant dans le répertoire courant ? Donc celui du jar exécutable ?

    A ce moment là, pour quelle raison ne me trouve-je ( ) pas dans le bon répertoire ? Ca dépend d'une variable d'environnement ?

    Si qqun a déjà eu ce genre de petit pb bien relou ... ?
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 75
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par in
    Hop je regarde dans le code (qui est de qqun d'autre) et je vois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jfc.setCurrentDirectory(new File(System.getProperty("user.dir")))
    Tu as la réponse dans ta question, pour plus d'info regarde la javadoc de System.getProperty

    Louis
    Louis

  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,


    ltournayre >> user.dir correspond bien au répertoire de travail...


    in >> Quel est le chemin complet exactement ?
    Comment est lancé l'application Java ?

    Attention aux raccourcis Windows qui peuvent modifier le répertoire de travail...

    a++

  4. #4
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    le chemin dans lequel est mon jar :
    K:\G_SIE\PCM\PCM Add-ons\Primatools\PMV5F
    qui est un lecteur réseau (mais je crois quand local le comportement est identique)

    je lance mon jar par clic droit -> javaw

    le user.dir vaut :
    C:\Documents and Settings\monlogin\Mes documents
    enfin c'est là que le JFileChooser me fait démarrer ...

    je sais pas trop quoi donner comme autres infos ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  5. #5
    Membre habitué Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Points : 169
    Points
    169
    Par défaut
    Bonjour,

    N'est-ce pas du à un changement d'OS ou de configuration utilisateur ? Il me semble que le répertoire utilisateur ("user.dir") n'est disponible que depuis Windows 2000/XP ou tout autre Windows gérant "plus proprement" les utilisateurs. Avant, le répertoire "Documents and Settings" s'appelait "Mes documents" et ne contenait pas de "All user" ou de "Default user", etc. donc "user.dir" devait retournait null...
    BlackWood
    Et comme apparemment, ça fait "class" dans une signature :
    , , , ,

  6. #6
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    ben avant ça marchait. Par contre je ne sais pas quant était ce "avant" mais je ne pense pas qu'on est régréssés de versions. Tous les postes sont à priori XP ou 2000 ....

    justement, à propos de valeurs nulles. Si par hasard, le getProperty(user.dir) renvoyait null. Aurais-je une exception ? Si non, dans quel répertoire me trouverai-je ?
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  7. #7
    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
    BlackWood >> user.dir c'est le répertoire courant et non pas le répertoire de l'utilisateur (tu dois confondre avec user.home).


    in >> J'ai essayer avec le simple code suivant de reproduire ton problème mais je n'ai pas réussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    		final JFrame frame = new JFrame();
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		JLabel label = new JLabel("user.dir : " + System.getProperty("user.dir") );
    		label.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
    		frame.add( label );
    		frame.pack();
    		frame.setLocationRelativeTo(null);
    		SwingUtilities.invokeLater(new Runnable() {
    			public void run() {
    				frame.setVisible(true);
    			}
    		});

    Dans tous les cas j'ai bien user.dir qui correspond au répertoire courant...


    Il faudrait que tu arrives à distinguer exactement quel est la différence entre les deux mode de lancement de l'application...

    a++

  8. #8
    Membre habitué Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Points : 169
    Points
    169
    Par défaut
    BlackWood >> user.dir c'est le répertoire courant et non pas le répertoire de l'utilisateur (tu dois confondre avec user.home).
    Exact. Autant pour moi !
    BlackWood
    Et comme apparemment, ça fait "class" dans une signature :
    , , , ,

  9. #9
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Ce code tu l'exécute depuis un jar executable comme moi je suppose ?

    Citation Envoyé par adiGuba
    Il faudrait que tu arrives à distinguer exactement quel est la différence entre les deux mode de lancement de l'application...
    je ne vois pas trop ce que tu veux dire mais je ne pense pas que ce code est changé depuis un bon bout de temps. Les config peut etre par contre (enfin c'est la cause la plus probable)

    En meme temps je n'ai pas de variables d'environnement qui ait la valeur qu'il me présente.

    Ca peut avoir rapport avec l'install de java ? je viens d'installer la 1.5 récemment mais le problème existait avant.

    je vais voir si je peux avoir plus d'indice avec mon collègue.


    En tout cas, je suis fixé, le code est à priori ok. Merci bien.

    j'attends un peu et je ferme le post ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  10. #10
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Salut :

    public void setCurrentDirectory(File dir)
    Citation Envoyé par javadoc
    Sets the current directory. Passing in null sets the file chooser to point to the user's default directory. This default depends on the operating system. It is typically the "My Documents" folder on Windows, and the user's home directory on Unix. If the file passed in as currentDirectory is not a directory, the parent of the file will be used as the currentDirectory. If the parent is not traversable, then it will walk up the parent tree until it finds a traversable directory, or hits the root of the file system.
    Il semble que tu passes null à setCurrentDirectory...

    bon courage

  11. #11
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Citation Envoyé par yann2
    Il semble que tu passes null à setCurrentDirectory...
    Oui en effet. Je vais pousser dans cette voie. Y a t'il des raisons pour lequelles cette valeur est nulle ?

    en tout cas désolé de ne pas avoir été voir de ce côté de la javadoc.
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  12. #12
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Il faut d'abord vérifier que new File(System.getProperty("user.dir")) est null. Ce qui m'étonnerait...

    Peut être qu'il ne trouve pas le répertoire. Bref, il faut tester.

  13. #13
    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 yann2
    Il faut d'abord vérifier que new File(System.getProperty("user.dir")) est null. Ce qui m'étonnerait...
    Le résultat d'un new ne peut pas être null !
    Dans le pire des cas, si la valeur renvoyé par System.getProperty() est null (bien que j'en doute), tu aurais une exception car le constructeur de File n'accepte pas les valeurs nulles...


    Sinon vérifie l'association la commande associé au .JAR dans les options des dossier de l'explorateur Windows...

    [edit] A tout hasard, vérifie que la valeur de "user.dir" ne soit pas modifié autre part dans le code de ton application...

    a++

  14. #14
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Citation Envoyé par adiGuba
    Le résultat d'un new ne peut pas être null !
    euh oui, c'est pour ça que j'ai rajouté :

    Ce qui m'étonnerait...
    [edit] il faudrait un System.out.println(System.getProperty("user.dir"))
    Pour écarter certaines pistes.[/edit]

  15. #15
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    bon,

    en fait je me suis dit tant qu'à essayer de résoudre le problème autant y toucher un peu... et je crois que c'est bon. Je suis désolé, j'aurais pu trouver seul. Mais bon comme c'était supposé fonctionner "avant", je ne voulais pas trop tripatouiller.

    Donc il y avait une ligne pas belle du tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (jtLog.getText() != null && jtLog.getText() != "") // HOU !! ;) {
    					jfc.setCurrentDirectory(new File(jtLog.getText()));
    				} else {
    					jfc.setCurrentDirectory(new File(System.getProperty("user.dir"))); //$NON-NLS-1$
    				}
    que j'ai remplacé par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     !"".equals(jtLog.getText())
    Si une valeur est déjà saisie, on la prend.


    et voilà, j'ai l'impression que ça fonctionne.

    Quant à savoir pourquoi ça marchait "avant" ... ben tant pis.

    je confirmerais par un petit résolu.

    Désolé encore une fois de vous avoir dérangé pour ça (j'aurais dû mettre plus de code dès le début).

    Mais bon, merci beaucoup !
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/12/2008, 16h38
  2. Connaitre le repertoire courant
    Par vincent0 dans le forum wxWidgets
    Réponses: 3
    Dernier message: 14/02/2005, 19h53
  3. [Jar]Repertoire courant du programme
    Par djskyz dans le forum Général Java
    Réponses: 18
    Dernier message: 20/07/2004, 17h34
  4. [Système] Connaître le répertoire courant
    Par Kimael dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 15/07/2004, 17h30
  5. repertoire courant
    Par mobee dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 11/12/2002, 13h03

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