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

API standards et tierces Java Discussion :

recuperer une variable d'environnement


Sujet :

API standards et tierces Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 65
    Par défaut recuperer une variable d'environnement
    Bonjour tout le monde,
    je souhaiterai recuperer une variable d'environnement, pour cela, je pensais utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.getProperty("qqchose");
    Le seul hic, c'est que cette methode ne permet de recuperer que des variables d'environnement systeme (path,ect..)

    (le programme doit marcher aussi bien sous windows que sous unix)

    Je ne sais donc pas quoi faire pour recuperé une variable créée par moi :/.
    Merci.

    Yann

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Tu peut employer la méthode getenv(String key), mais le problème est qu'elle est dépréciée

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 65
    Par défaut
    J'avais vu cette methode, mais que veut dire exactement déprécié ?

  4. #4
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Ca veut dire que cette méthode ne sera peut-être pas reprise dans les versions suivantes de la JVM

    Donc, si tu fais ton appli aujourd'hui sur la 1.5, peut-être que plus tard sur la 1.7, elle n'existera plus

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 65
    Par défaut
    arf :/

    ça m'embete ça.

    je vous explique ce que je veux faire, peu etre qu'il y a une autre solution. J'ai codé une application, et pour fonctionner elle a besoin de connaitre le chemin complet du fichier "config.ini" ( aussi bien sous windows que linux). ne connaissant pas l'endroit, ni la plateforme où va etre installée l'application je pensai utiliser une variable d'environnnement.

    piouf !! auriez vous des suggestions qui pourrez m'aider ?

  6. #6
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,



    C'est à la fois simple et complexe...


    Si tu utilises Java 5.0, tu peux tout simplement utiliser la méthode System.getEnv() (attention toutefois à Windows qui est case-insensitive... tiens ca me rappelle un certain débat )

    Mais si cette méthode existe depuis le premier JDK mais elle a été deprecated pendant un bon bout de temps (depuis le JDK 1.2 il me semble) et elle provoquait une erreur si on essayait de l'utiliser...

    Donc tu ne pourras pas l'utiliser si ton application doit fonctionner avec un JRE plus ancien...

    A l'époque il était conseillé d'utiliser plutôt les propriétées avec System.getProperty() mais l'inconviénient c'est que tu dois la passer à ton programme avec -D quand tu le lances, par exemple :

    Pour Windows :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -Dqqchose=%qqchose% TaClassePrincipale
    Pour Linux/Unix:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -Dqqchose=$qqchose TaClassePrincipale

    Enfin, dernière solution (mais pas très propre) : tu peux lancer le built-in set qui te renvoit la liste des variables d'environnement...

    a++

  7. #7
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wichtounet
    Donc, si tu fais ton appli aujourd'hui sur la 1.5, peut-être que plus tard sur la 1.7, elle n'existera plus
    Sauf que getEnv() n'est plus deprecated sur le 1.5
    Et qu'il y a vraiment peu de chances que les méthodes deprecated soit supprimé (c'est déjà étonnant que getEnv() ait renvoyé une exception), ne serait-ce que pour assurer la compatibilité ascendante...

    a++

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 65
    Par défaut
    j'utilise la 1.4.2 me conseillez vous de changer de version ? c'est peu etre la chose la plus simple a faire.

  9. #9
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par adiGuba
    Sauf que getEnv() n'est plus deprecated sur le 1.5
    Et qu'il y a vraiment peu de chances que les méthodes deprecated soit supprimé (c'est déjà étonnant que getEnv() ait renvoyé une exception), ne serait-ce que pour assurer la compatibilité ascendante...

    a++
    Ok, autant pour moi

    P.S. A moins d'une erreur dans la documentation sur le javasearch, getEnv n'existe pas, c'est plutot getenv, ce qui d'ailleurs me semble bizarre

  10. #10
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par yann_p
    j'utilise la 1.4.2 me conseillez vous de changer de version ? c'est peu etre la chose la plus simple a faire.
    Ben ca dépend de toi ! Quel est la cible de l'application ? Tes clients peuvent-ils changer de version ???

    Si oui je te conseille vivement la 5.0, qui apporte beaucoups d'améliorations (voir la présentation de Java 5.0 par Lionel Roux).

    a++

  11. #11
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wichtounet
    P.S. A moins d'une erreur dans la documentation sur le javasearch, getEnv n'existe pas, c'est plutot getenv, ce qui d'ailleurs me semble bizarre
    Oui en effet c'est bien getenv() sur Java 1.4 et 5.0, c'est moi qui me suis trompé en rajoutant le E par habitude...

    Et oui même chez Sun il n'ont pas toujours respecté les règles de nommages

  12. #12
    Membre expérimenté Avatar de Betatesteur
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Par défaut
    changer de version 1.4.2 à 1.5
    pas nécessairement.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 65
    Par défaut
    il est clair que le mieux pour les clients serait de ne pas changer de version.

    tu entendais quoi par:
    Enfin, dernière solution (mais pas très propre) : tu peux lancer le built-in set qui te renvoit la liste des variables d'environnement...

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 65
    Par défaut
    ah ?
    Betatesteur

    tu as une autre solution ?

  15. #15
    Membre expérimenté Avatar de Betatesteur
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Par défaut
    T'as pas besoin de changer de version elle ne sera pas supprimé de si tôt cette méthode


    Etant donné que java est multiplatforme, peu importe unix ou windows, java par l'intermédiaire de la class java.lang.System te donnera accès à toutes les variables définies par le système (unix ou windows)
    Mais se baser sur les variables du système n'étant pas très portable, Java définit un certain nombre de variables de façon indépendante de la plateforme d'exécution.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    System.getProperty("user.dir");
    System.getProperty("java.home");
    System.getProperty("os.name");
    Voir Faq
    Connaître la liste des variables d'environnement :
    La liste des variables d'environnement est disponible par la méthode getProperties() de la classe java.lang.System.
    Programme affichant la liste de toutes les variables :

    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();        
    System.out.println( cle + " = " + System.getProperty(cle) );
    }

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 65
    Par défaut
    j'ai déjà essayé ça, ça ne marche pas qu'avec certaines variables d'environnements

  17. #17
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Betatesteur : system.getProperties() ne te renvoit pas les variables d'environnements du système, mais des propriétées systèmes spécifique à Java, et que tu peux passer à ton programme via l'option -D de java.

    Citation Envoyé par yann_p
    tu entendait quoi par:
    Enfin, dernière solution (mais pas très propre) : tu peux lancer le built-in set qui te renvoit la liste des variables d'environnement...
    Normalement lorsque tu tapes set dans une ligne de commande, tu as le même resultats sur la plupart des systèmes, c'est à dire que tu obtiens la listes des variables d'environnement sous un format :
    Il est donc possible de lancer cela et de récupérer le tout depuis Java...
    Malheureusement comme c'est une commande built-in tu dois gérer les différents système à la main, car le programme à lancer diffère :
    • command.com /C set sous Windows 9x
    • cmd.exe /C set sous Windows NT...
    • /bin/sh set sous Unix...
    De plus le format n'est pas forcément le même selon les versions de ton shell (sous Linux certain shell utilise des variables d'environnement comme des fonctions, défini sur plusieurs lignes).

    J'avais un code qui faisait quelque chose de similaire... si je le retrouve...


    Enfin une dernière solution serait de passer par JNI et du code natif, mais cela implique une recompilation pour chaque système cible...

    a++

  18. #18
    Membre expérimenté Avatar de Betatesteur
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Par défaut
    sorry

  19. #19
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Betatesteur
    sorry
    C'est rien ! C'est vrai que c'est assez proche

  20. #20
    Membre expérimenté Avatar de Betatesteur
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Par défaut

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. NASM Tester une variable d'environnement à la "compilat
    Par Pierre Maurette dans le forum Assembleur
    Réponses: 1
    Dernier message: 10/06/2005, 13h27
  2. comment recuperer une variable dans flash
    Par krépuscul dans le forum Flash
    Réponses: 30
    Dernier message: 16/10/2003, 09h40
  3. [BES] Création d'une variable d'environnement
    Par NGI80 dans le forum Autres
    Réponses: 2
    Dernier message: 17/10/2002, 07h31
  4. 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