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 :

Récupérer des variables d'environnement


Sujet :

Java

  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 53
    Par défaut Récupérer des variables d'environnement
    Bonjour,

    Je viens de lire la discussion :
    http://www.developpez.net/forums/showthread.php?t=45751

    D'après ce que j ai compris, vu que je suis pas en Java 5.0, je dois utiliser runtime.exec("env | grep STATUS1") pour récuperer ma variable d'environnement.

    J'appelle mon code java depuis un script ksh :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    CPT=10
    java MonJava $CPT &
     
    while (($CPT > 0));
    do
    	if (($CPT > 6))
    	then
    		export STATUS1=0
    	elif (($CPT > 3))
    	then
    		export STATUS1=1
    	else
    		export STATUS1=2
    	fi
    	CPT=$(($CPT-1))
    	sleep 2
    done
    Dans mon code java, j execute en boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    process = runtime.exec("env | grep STATUS1");
    System.out.println("status = "+ process);
    J obtiens à chaque passage un truc du genre :
    status = java.lang.UNIXProcess@17f242c

    Est-ce que je suis censée pouvoir récupérer la valeur de STATUS1 à partir de ça ?

  2. #2
    Membre expérimenté Avatar de hydraland
    Profil pro
    Développeur Java
    Inscrit en
    Mai 2006
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2006
    Messages : 179
    Par défaut
    Salut,

    Je te conseille de lire ce tutoriel http://ydisanto.developpez.com/tutoriels/j2se/runtime/.
    Je te conseillerai aussi de lire la javadoc des objets de l'API que tu utilises cela te sera utile.
    Ensuite je ferait quelque chose de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    process = runtime.exec("/usr/bin/env");
    inStream = process.getInputStream();
     
    //Lire le flux pour extraire la valeur de la variable STATUS1
    ...

    A+
    Hydraland

  3. #3
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 53
    Par défaut
    Merci

    Bon voilà, après bien des efforts, j'aboutis à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    process = runtime.exec(new String[] { "env" });
    is = process.getInputStream();
    isr = new InputStreamReader(is);
    br = new BufferedReader(isr);
    J'ai du ne laisser que "env" dans la commande, faute de quoi, ça donne une exception "env | grep STATUS1 NOT FOUND".

    Du coup, je suis obligée de parcourir toutes les lignes de "env" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    while ((line = br.readLine()) != null)
    {
    	if(line.length() >= 9)
    	{	
    		if(line.substring(0,7).compareTo("STATUS1") == 0)
    		{
    			System.out.println("toto = " + line);
    			Status1 = Integer.valueOf(line.substring(8)).intValue();
    		}
            }
    }
    Tout ça va à peu près, sauf qu'il ne voit pas les variations de ma variable STATUS1 (cf. ksh plus haut).
    Il ne voit que la valeur (éventuelle) de STATUS1 que j'ai entré à la main dans la xterm par export STATUS1=1 (par exemple). Les export de mon scripts ksh ont l'air invisibles pour le java...

    Une idée ?

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

    Citation Envoyé par LinoaHeart Voir le message
    J'ai du ne laisser que "env" dans la commande, faute de quoi, ça donne une exception "env | grep STATUS1 NOT FOUND".
    C'est normal puisque exec() lance un programme avec ses arguments, mais ne permet pas d'interpréter une ligne de commande comme le ferait un shell...

    Pour plus d'info voir le tutoriel sur Runtime et ce billet sur mon blog : http://blog.developpez.com/index.php...&c=1&tb=1&pb=1

    Citation Envoyé par LinoaHeart Voir le message
    Du coup, je suis obligée de parcourir toutes les lignes de "env" :
    Je pense que tu dois pouvoir passer le nom de la variable directement en paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    process = runtime.exec(new String[] { "env", "STATUS1" });
    (et attention à bien fermer les flux que tu n'utilises pas)

    Citation Envoyé par LinoaHeart Voir le message
    Les export de mon scripts ksh ont l'air invisibles pour le java...
    C'est tout à fait normal : un programme hérite des variables d'environnements lors de sa création. Ensuite il utilise sa propre copie et les modifications effectuées sur le programme appelant (le shell-script) ne peuvent pas être propagé...

    C'est le fonctionnement des variables d'environnements sur tous les systèmes d'exploitations !



    Si tu veux "communiquer" avec ton programme principal il faudra t'y prendre autrement

  5. #5
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 53
    Par défaut
    ok Merci merci pour l'explication !!

    J'ai compris... Je vais faire autrement , parce que si je ne vois pas les valeurs de mes variables d'env au fur et à mesure, ça ne pourra pas fonctionner !

    ++

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/01/2008, 18h45
  2. récupérer des variables d'environnement
    Par djidane39 dans le forum Langage
    Réponses: 3
    Dernier message: 07/12/2007, 18h22
  3. Récupérer des variables d'environnement
    Par alexadvance dans le forum Visual C++
    Réponses: 1
    Dernier message: 15/03/2007, 15h40
  4. Réponses: 2
    Dernier message: 19/02/2007, 10h39

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