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 :

Ecrire dans une variable d'environnement


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Par défaut Ecrire dans une variable d'environnement
    Bonjour,

    Je souhaite dans mon application eclipse pouvoir setter des variables d'environnement suite à un évènement (quel qu'il soit).

    J'ai essayé de faire exécuter un fichier .bat contenant une liste de SET VAR=VAL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Process process = null;
    process = Runtime.getRuntime().exec("path de mon .bat");
    ... avec toutes les précautions prises pour fermer les flux
    => KO

    J'ai essayé d'utiliser ProcessBuilder (là je suis pas trop sure de la syntaxe):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ProcessBuilder pb = new ProcessBuilder("cmd");
    pb.environment().put(key,value);
    Process p = pb.start();
    => KO

    J'ai essayé d'exécuter la commande comme je le ferais dans une invite de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Runtime.getRuntime().exec("set VAR=VAL");
    => KO

    Une autre idée ?
    ou une correction ?

    Merci

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Un peu comme la solution 2, je pense a System.getEnv() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    final Map<String, String> env = new HashMap<String, String>(System.getenv());
    env.put("Path", env.get("Path") + ";foo");
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Par défaut
    Citation Envoyé par wax78 Voir le message
    Un peu comme la solution 2, je pense a System.getEnv() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    final Map<String, String> env = new HashMap<String, String>(System.getenv());
    env.put("Path", env.get("Path") + ";foo");
    Non ça marche pas mes variables restent inchangées !

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    C'est quoi le but de l'opération. Même si tu arrivais à définir une variable d'environnement ou en changer une dans ton application en cours, ça ne changerais rien à la jvm. System.getEnv() travaillant sur une copie faite au démarrage de la JVM.

    Le seul intérêt, c'est de les définir pour les applications que tu va lancer. Pour ça tu as une version de exec() qui prend en paramètre toutes les clés/valeur d'environnement que tu veux montrer à l'applicaition en question.

  5. #5
    Membre éclairé Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    C'est quoi le but de l'opération. Même si tu arrivais à définir une variable d'environnement ou en changer une dans ton application en cours, ça ne changerais rien à la jvm. System.getEnv() travaillant sur une copie faite au démarrage de la JVM.

    Le seul intérêt, c'est de les définir pour les applications que tu va lancer. Pour ça tu as une version de exec() qui prend en paramètre toutes les clés/valeur d'environnement que tu veux montrer à l'applicaition en question.
    En fait, au départ j'ai un .bat qui positionne les variables et lance l'application.
    Là pas de soucis, ça marche super !
    Mais, on me demande de lancer l'appli et d'affecter les variables après coup pour une utilisation dans cette même application.

    Ce n'est pas possible ?

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    non,

    Faudra générer le .bat lancant ta propre application, le lancer et quitter immédiatement ta première application. Un peu le même principe que suivent les programme se mettant à jour: ils installent la mise à jour, la lancent et quittent l'ancienne version.

  7. #7
    Membre éclairé Avatar de kkt8
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 472
    Par défaut
    Tout ça n'est pas satisfaisant !
    Tant pis, je vais voir du coté des projets eclipse qui eux peuvent contenir des variables d'environnement.

    Merci beaucoup pour toutes ces pistes !

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ???
    Dans les projet tu défini les variables d'environnement AVANT d'exécuter le projet, donc ça change rien à ton problème :/

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

Discussions similaires

  1. Test d'une variable d'environnement dans un Shell
    Par padraig29 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 27/09/2007, 21h54
  2. [WIN2003]définir une variable d'environnement dans un batch
    Par creezeer dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 28/08/2007, 11h25
  3. ecrire dans une variable d'environnement
    Par gy0m76 dans le forum C
    Réponses: 6
    Dernier message: 11/12/2006, 14h34
  4. Écrire du HTML dans une variable
    Par chienlou dans le forum Langage
    Réponses: 13
    Dernier message: 15/05/2006, 17h54
  5. Réponses: 11
    Dernier message: 08/02/2006, 16h59

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