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 :

[Système] Variable d'environnement "windir"


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Par défaut [Système] Variable d'environnement "windir"
    Bonjour,

    Je cherche à récupérer la variable d'environnement "windir" car dans le repertoire Windows se trouve un fichier .ini que je dois utiliser.

    La FAQ parle de la récupération des variables d'environnement mais en affichant toutes ces variables avec leur valeur respective (d'après le code fourni dans la FAQ), il apparaît impossible de récupérer la variable d'environnement "windir".

    Quelqu'un aurait-il une solution à mon problème???

    Merci d'avance,
    Chewby

  2. #2
    Membre confirmé
    Avatar de guipom
    Inscrit en
    Janvier 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 207
    Par défaut
    Ce que tu cherches est dans java.library.path

    seulement tout est un peu en quiquonce la dedans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    java.util.Enumeration liste = System.getProperties().propertyNames();
    		String cle = "";
    		while( liste.hasMoreElements() ) {
    		        cle = (String)liste.nextElement();
    		        if (cle.equals("java.library.path")) break;
    		}
            System.out.println(cle + " = " + System.getProperty(cle) );
    me donne :
    java.library.path = C:\Program Files\Java\j2re1.4.2_07\bin;.;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\ATI Technologies\ATI Control Panel;C:\Program Files\SSH Communications Security\SSH Secure Shell;C:\Program Files\Java\j2sdk1.4.2_07\bin;C:\Program Files\Java\apache-ant-1.6.2\bin
    y a bien ce que tu cherches

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Par défaut
    Merci en effet dans "java.library.path", il y a bien "C:\Windows".

    Maintenant le problème est de pouvoir réellement récupérer ce répertoire parmi tous les répertoires que donne "java.library.path".

    Ce que je remarque c'est que ce que le répertoire Windows se trouve à la 4ème position dans la variable pour toi comme pour moi. En plus, les 3 premiers répertoires pointent dans l'ordre sur:
    - bin de Java
    - .
    - system32
    dans la variable pour toi comme pour moi également.
    Est-ce un hasard???

    Si l'ordre des répertoires dans cette variable n'est pas un argument sûr, y-a-t-il une autre solution pour récuperer "windir"???

  4. #4
    Membre confirmé
    Avatar de guipom
    Inscrit en
    Janvier 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 207
    Par défaut
    bien sur

    il suffit de faire exécuter la commande
    echo %WINDIR%
    un exemple vite écrit et non testé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     try{
            	Process proc = Runtime.getRuntime().exec("echo %WINDIR%");
            	proc.waitFor();
    			BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
    	        String str;
    	        while ((str = in.readLine()) != null) {
    	            System.out.println(str);
    	        }
    	        in.close();
            }
            catch(Exception e) { System.out.println("catch");e.printStackTrace();}

  5. #5
    KKI
    KKI est déconnecté
    Membre habitué
    Inscrit en
    Mars 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 16
    Par défaut
    Qui peut le moins peut le plus...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(System.getenv("WINDIR"));
    .


  6. #6
    Membre confirmé
    Avatar de guipom
    Inscrit en
    Janvier 2003
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 207
    Par défaut
    Ca s'était valable avant mais maintenant ton truc il faut passer par les properties, le -D quoi il me semble. Enfin quand je dis il me semble, j'ai meme essayé et mon compilo java me le confirme

  7. #7
    KKI
    KKI est déconnecté
    Membre habitué
    Inscrit en
    Mars 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 16
    Par défaut
    Non on peut utiliser les deux, variables d'environnement ou propriétés systèmes.

    Si on veut accéder aux spécificités d'un environnement, les variables d'environnement sont la solution, sinon les propriétés fonctionnent pour la plupart des besoins.

  8. #8
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Par défaut
    Bonjour,

    Je suis d'accord avec guipom:
    Le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(System.getenv("WINDIR"));
    ne fonctionne plus.

    Et pour ce qui est de la solution qui utilise la commande
    le code donne une erreur á l'exécution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    java.io.IOException: CreateProcess: echo %windir% error=2
            at java.lang.Win32Process.create(Native Method)
            at java.lang.Win32Process.<init>(Win32Process.java:61)
            at java.lang.Runtime.execInternal(Native Method)
            at java.lang.Runtime.exec(Runtime.java:546)
            at java.lang.Runtime.exec(Runtime.java:413)
            at java.lang.Runtime.exec(Runtime.java:356)
            at java.lang.Runtime.exec(Runtime.java:320)
            at importador.Importar.LoadParamFromFileConfig(Importar.java:73)
            at importador.Importar.main(Importar.java:577)
    Si vous trouvez la solution avant moi, merci...

  9. #9
    Futur Membre du Club
    Inscrit en
    Mars 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 4
    Par défaut
    Ca y est, j'ai trouvé...


    Pour que certaines commandes fonctionnent bien, á l'exécution depuis le code Java, il faut leur rajouter:
    Le code complet pour avoir le répertoire Windows est donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    try{ 
               Process proc = Runtime.getRuntime().exec("cmd.exe /c echo %WINDIR%"); 
               proc.waitFor(); 
             BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream())); 
               String str; 
               while ((str = in.readLine()) != null) { 
                   System.out.println(str); 
               } 
               in.close(); 
            } 
            catch(Exception e) { System.out.println("catch");e.printStackTrace();}
    Merci pour tout [/code]

  10. #10
    KKI
    KKI est déconnecté
    Membre habitué
    Inscrit en
    Mars 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 16
    Par défaut
    Quel bricolage !!! Je signale seulement que Sun a réactivé le fonctionnement de getenv dans le JDK 1.5 (http://java.sun.com/j2se/1.5.0/jcp/b...html#java.lang) depuis un an maintenant devant la pression des développeurs...

    Seules modifications par rapport à l'ancienne version qui fonctionnait très bien :
    - le SecurityManager (lorsqu'il y en a un) vérifie que tu as le droit d'accéder à getenv;
    - getenv existe en deux versions avec ou sans argument (il retourne alors une map des variables d'environnement).

    Tu peux donc l'utiliser sereinement. 8)

  11. #11
    KKI
    KKI est déconnecté
    Membre habitué
    Inscrit en
    Mars 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 16
    Par défaut
    Au fait, pour info, l'option "/c" de la commande en ligne DOS (cmd) ne sert pas "à faire fonctionner certaines commandes" mais indique que le process cmd doit être automatiquement terminé après avoir exécuter la commande passée en argument.

    Effectivement, cela est nécessaire pour récupérer le résultat de l'exécution de ta commande si celle-ci (et c'est le cas de echo) ne termine pas elle-même le process cmd.

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

Discussions similaires

  1. [BES] Création d'une variable d'environnement
    Par NGI80 dans le forum Autres
    Réponses: 2
    Dernier message: 17/10/2002, 07h31
  2. nom de fichier et variables d'environnement
    Par joebarthib dans le forum Langage
    Réponses: 2
    Dernier message: 18/07/2002, 15h21
  3. Réponses: 4
    Dernier message: 18/07/2002, 13h32

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