Répertoire JAVA_HOME sous Linux

Existe-t-il une commande linux que je pourrais utiliser pour trouver le répertoire JAVA_HOME ? J’ai essayé d’imprimer les variables d’environnement (“env”) mais je ne trouve pas le répertoire.

echo $JAVA_HOME imprimera la valeur si elle est définie. Cependant, si vous ne l’avez pas défini manuellement dans vos scripts de démarrage, il n’est probablement pas défini.

Si vous essayez which java et qu’il ne trouve rien, Java peut ne pas être installé sur votre machine, ou du moins n’est pas sur votre chemin. Selon la dissortingbution Linux dont vous disposez et l’access root ou non, vous pouvez aller sur http://www.java.com pour télécharger la version dont vous avez besoin. Ensuite, vous pouvez définir JAVA_HOME pour qu’il pointe vers ce répertoire. Rappelez-vous qu’il ne s’agit que d’une convention et que vous ne devez pas l’utiliser pour déterminer si Java est installé ou non.

Sous Linux, vous pouvez lancer $(dirname $(dirname $(readlink -f $(which javac))))

Sur Mac, vous pouvez lancer $(dirname $(readlink $(which javac)))/java_home

Je ne suis pas sûr des fenêtres mais j’imagine where javac vous rapprocherait

Je sais que c’est en retard, mais cette commande recherche le répertoire / usr / pour trouver java pour vous

 sudo find /usr/ -name *jdk 

Résultats à

 /usr/lib/jvm/java-6-openjdk /usr/lib/jvm/java-1.6.0-openjdk 

FYI, si vous êtes sur un Mac, JAVA_HOME est actuellement situé à

/System/Library/Frameworks/JavaVM.framework/Home

Juste une autre solution, celle-ci croise la plate-forme (utilise java ), et vous pointe vers l’emplacement du jre.

 java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home' 

Affiche tous les parameters actuels de java et trouve celui appelé java.home .

Pour afficher la valeur d’une variable d’environnement que vous utilisez:

echo $ VARIABLE

donc dans votre cas sera:

echo $ JAVA_HOME

Si vous ne l’avez pas configuré, vous pouvez append votre fichier .bashrc :

export JAVA_HOME = $ (readlink -f / usr / bin / java | sed “s: bin / java ::”)

et cela changera dynamicment quand vous mettrez à jour vos paquets.

Si $JAVA_HOME est défini dans votre environnement …

 $ echo $JAVA_HOME $ # I am not lucky... 

Vous pouvez le deviner à partir des classes chargées.

 $ java -showversion -verbose 2>&1 | head -1 [Opened /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64/jre/lib/rt.jar] 

Cette méthode garantit que vous trouvez le bon jdk / jre utilisé au cas où il y aurait plusieurs installations.

Ou en utilisant strace :

 $ strace -e open java -showversion 2>&1 | grep -m1 /jre/ open("/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64/jre/bin/../lib/amd64/jli/tls/x86_64/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) 

Sur le terminal, tapez:

echo “$ JAVA_HOME”

Si vous n’obtenez rien, votre variable d’environnement JAVA_HOME n’a pas été définie. Vous pouvez essayer d’utiliser “Locate java” pour essayer de localiser votre installation de Java.

Avez-vous défini votre JAVA_HOME

  • Korn et bash shells: export JAVA_HOME = répertoire-jdk-install
  • Bourne shell: JAVA_HOME = rép-install-jdk; export JAVA_HOME
  • C shell: setenv JAVA_HOME jdk-install-dir

Voici une amélioration, en ne prenant que le répertoire stdout:

 java -XshowSettings:properties -version 2>&1 \ | sed '/^[[:space:]]*java\.home/!d;s/^[[:space:]]*java\.home[[:space:]]*=[[:space:]]*//' 

http://www.gnu.org/software/sed/manual/html_node/Print-bash-environment.html#Print-bash-environment

Si vous voulez vraiment obtenir des informations sur votre BASH, mettez ce script dans votre fichier .bashrc et regardez-le. Vous pouvez faire défiler et regarder.