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

Langage Java Discussion :

Variable d'environnment [SWING]


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Variable d'environnment [SWING]
    Bonjour,

    Dans un Jlabel, j'aimerais afficher la valeur d'une variable d'environnement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Title1.setText("JAVA_HOME = " + System.getenv("JAVA_HOME"));
    En exécutant le script, j'obtiens :

    java.lang.Error: getenv no longer supported, use properties and -D instead: JAVA_HOME
    Quelqu'un pourrait il m'éclairer sur le -D ... ?!

    Merci d'avance

  2. #2
    in
    in est déconnecté
    Membre Expert 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
    Par défaut
    javadoc ->

    Deprecated. The preferred way to extract system-dependent information is the system properties of the java.lang.System.getProperty methods and the corresponding getTypeName methods of the Boolean, Integer, and Long primitive types. For example:

    String classPath = System.getProperty("java.class.path",".");


    if (Boolean.getBoolean("myapp.exper.mode"))
    enableExpertCommands();
    pour le -D man java ou help java devrait suffire. mais tu n'en a pas besoin je pense ...

  3. #3
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bonjour,

    le -D, là je ne sais pas. Peut-être appeler le programme avec
    java -D un_repertoire fichier_main
    En tout cas, pour ce que tu cherches, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.getProperty("java.home");
    Ou quelque chose de proche.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  4. #4
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    Citation Envoyé par xavlours
    En tout cas, pour ce que tu cherches, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.getProperty("java.home");
    Ou quelque chose de proche.
    C'est effectivement plus portable.
    ceci dit getEnv est revenu en odeur de sainteté avec J2SE5 (mais bien lire la doc!)
    pour le -D c'est une mise en place de variable nommée dans l'environnement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -Dcouleur=rose_bonbon monpackage.MaClasse

  5. #5
    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,


    Pour information : getenv() avait été déprécié car il posait des problèmes de portabilité, puisque les système ne gère pas de la même manière les variable d'environnement (notamment concernant la prise en compte de la casse).

    En remplacement il était conseillé d'utiliser des variables systèmes Java que l'on passe avec l'option -D, par exemple si on veut passer la valeur de JAVA_HOME, on ferait sous Windows :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -DJAVA_HOME=%JAVA_HOME% ...
    et sous Unix/Linux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -DJAVA_HOME=$JAVA_HOME ...
    Que tu récupères ensuite de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String javaHome = System.getProperty("JAVA_HOME");

    Il est à noter toutefois que la méthode getenv() a été réintroduite dans Java 5.0, car cette solution alternative est souvent plus "complexe" à mettre en oeuvre comparer aux "problèmes de portabilité" de getenv()...

    a++

  6. #6
    Invité
    Invité(e)
    Par défaut
    Salut,

    Heu le :

    java -DJAVA_HOME=%JAVA_HOME%;

    Je dois le mettre où dans mon prog ? Pas trop compris

    J'ai testé ceci :
    Runtime.getRuntime().exec("cmd.exe /c java -DJAVA_HOME=%JAVA_HOME%");

    Et en faisant getProperty("JAVA_HOME") j'obtiens null.

    Merci !

  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 LTN
    Je dois le mettre où dans mon prog ? Pas trop compris
    Lorsque tu appelles ton programme (sur la ligne de commande, dans ton batch... cela dépend de la manière dont tu le lances...)

    Citation Envoyé par LTN
    Runtime.getRuntime().exec("cmd.exe /c java -DJAVA_HOME=%JAVA_HOME%");
    Normal %JAVA_HOME% ne marche pas en Java : c'est une syntaxe du shell du système. Tu dois faire ceci avant l'appel de ce programme...

    Mais dans ce cas là pourquoi ne pas faire directement, comme cela a été dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.getProperty("java.home");
    a++

    PS : pourquoi as-tu besoin de JAVA_HOME ???

  8. #8
    Invité
    Invité(e)
    Par défaut
    En fait il n'y a pas que JAVA_HOME, j'ai besoin de pas mal de variables d'environnement système comme PATH, SQLPATH etc... dans mon programme

    Avant j'utilisais un fichier ANT + properties et il suffisait de faire :
    <property environment="env"/> et d'y accéder avec env.JAVA_HOME par exemple.

    Mais là je suis obligée de passer par JAVA.

    Je ne trouve pas le moyen d'accéder à mes variables système sans passer par ant.

    Voilà

  9. #9
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Oui, on a été un peu confus.
    Pour avoir la valeur de la variable d'environnement JAVA_HOME (qui contient le nom du répertoire dans lequel est installé le JDK), il suffit d'appeler dans ton programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String javaHomeEnvironmentVariable = System.getProperty("java.home");
    Il est également possible de passer des propriétés supplémentaires au programme à son lancement. Si tu veux par exemple passer une variable qui s'appelle foo et dont la valeur est bar, il faut exécuter le programme ainsi (si tu le lances à partir d'une console) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -Dfoo=bar MaClasseMain
    . Si tu utilises un environnement de développement dans lequel tu cliques pour exécuter le programme, il faut trifouiller la configuration.

    Cela n'a rien à voir avec le lancement d'un programme externe avec Runtime.exec() !
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  10. #10
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 909
    Billets dans le blog
    54
    Par défaut
    Citation Envoyé par adiGuba
    Salut,
    Il est à noter toutefois que la méthode getenv() a été réintroduite dans Java 5.0, car cette solution alternative est souvent plus "complexe" à mettre en oeuvre comparer aux "problèmes de portabilité" de getenv()...
    Etonnant ... moi j'appele surtout le fait de l'avoir deprecie precedement : une grosse bourde faite sans reflechir.

    Dans le meme genre de revirrement apres couts on a eut droit a des trucs comme JFrame.add().......................... ou comment rendre la vie des programmeurs plus compliquee sous le pretexte d'etre juste 100% correct dans l'usage d'une API (note : trop de rigueur tue la rigueur).

    Histoire de raler un peu plus, certaines methodes deprecated l'ont ete car la maniere dont elle accedaient au systeme sous-jacent n'etait pas correct blablabla : et ben dans ce cas, dans les maj ulterieures il suffisait de rectifier cette maniere (!), pas de deprecier la methode !

    LTN, je ne peux que te conseiller de passer sous Java 5 (ou de rester avec une version dans laquelle cette methode n'est pas depreciee). Sinon... depuis ton programme tu executes une commande systeme qui liste toutes les proprietes (ex: set) et tu parses manuellement le contenus du flux associe a la sortie standard de cette commande pour trouver toutes les variables. Evidement tu perds en portabilite.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par bouye
    LTN, je ne peux que te conseiller de passer sous Java 5 (ou de rester avec une version dans laquelle cette methode n'est pas depreciee). Sinon... depuis ton programme tu executes une commande systeme qui liste toutes les proprietes (ex: set) et tu parses manuellement le contenus du flux associe a la sortie standard de cette commande pour trouver toutes les variables.
    Merci

  12. #12
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    D'après la javadoc, il vaut mieux passer par getProperty

    It is best to use system properties where possible
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    title1.setText(System.getProperty("java.home");
    [EDIT]ahhh, doublement grillé


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

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

Discussions similaires

  1. [langage] Création de variable d'environnements
    Par Smaugg dans le forum Langage
    Réponses: 20
    Dernier message: 26/04/2004, 09h32
  2. [BES] Création d'une variable d'environnement
    Par NGI80 dans le forum Autres
    Réponses: 2
    Dernier message: 17/10/2002, 07h31
  3. nom de fichier et variables d'environnement
    Par joebarthib dans le forum Langage
    Réponses: 2
    Dernier message: 18/07/2002, 15h21
  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