System.getenv () renvoie la valeur null lorsque la variable d’environnement existe

J’essaie de récupérer System.getenv() pour obtenir la valeur d’une variable d’environnement que j’ai définie via mon terminal (Mac). J’ai également défini la variable dans mon fichier .bash_profile et rechargé. Après cela, j’ai renvoyé la valeur et la valeur correcte a été imprimée sur le terminal. Lorsque vous essayez de récupérer la valeur de la variable (je me suis assuré que j’utilisais le nom correct à la fois dans mon fichier .bash_profile et lors de l’utilisation de System.getenv() .

Dans le code ci-dessous, j’ai remplacé le nom de la variable par VAR_NAME :

 Ssortingng varValue = System.getenv("VAR_NAME"); System.out.println("Value: " + varValue); 

Dans mon .bash_profile:

 export VAR_NAME="foo" 

“null” est imprimé lorsque j’imprime la valeur de varValue .

Quelle pourrait en être la cause?

Edit: J’ai suivi la réponse en haut ici , redémarré Eclipse et cela a fonctionné!

    La réponse à cette question est plus générale que System.getenv() en Java.

    Les variables d’environnement descendent uniquement dans l’arborescence de processus et uniquement lorsqu’un processus est lancé. Eclipse est un processus enfant de votre shell. Par conséquent, il a hérité de toutes les variables d’environnement définies sur votre shell lors du lancement d’Eclipse .

    Vous avez probablement défini la variable d’environnement sur votre shell après avoir lancé Eclipse. Par conséquent, Eclipse et les processus Java enfants qu’il a créés ne connaîtront jamais votre nouvelle variable d’environnement.

    En raison de ce comportement, la solution consiste à quitter Eclipse et à le relancer à partir de votre shell, dans lequel la variable d’environnement est déjà définie . Une autre option consiste à accéder à la configuration d’exécution du projet et à y définir la variable d’environnement.