Comment trouver mon JAVA_HOME actuel dans Ubuntu?


Réponses:


84

Tapez le terminal,

echo $JAVA_HOME

Affiche le chemin de la variable JAVA_HOME.

SI RIEN NE APPARAÎT ALORS LE MISE EN PLACE AVEC CE

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

Cela diffère selon votre type et version de JDK

Pour afficher suivez la première commande.

Suivez ce post pour utiliser différents JDK ou basculer entre JDK


Cela donne "/ usr / lib / jvm / java-6-sun". Mais j’ai installé java 7. Lorsque je le vérifie avec "java -version", il donne la version java "1.7.0_45" Environnement d’exécution Java (TM) SE (version 1.7.0_45-b18) Java HotSpot (TM) Serveur VM (version 24h45-b08, mode mixte)
Samitha Chathuranga

2
puis exécutez la deuxième commande pour définir la variable JAVA_HOME. NOTE:JAVA_HOME doesn't make jdk default, it just makes JAVA_HOME variable set to a path & if you want to use different jdk installed on same machine then check my answer, I have edited it.
Approfondir

vous devriez le placer dans / etc / environment
keiki,

@ Jax-L Mais maintenant, quand je donne l'écho à JAVA_HOME, il s'affiche simplement sous la forme "JAVA_HOME". Le chemin que j'ai donné ne s'affiche pas ... ???
Samitha Chathuranga

2
l'exportation ne fonctionne que jusqu'au redémarrage. Ou vous ajoutez une exportation au script de connexion .bashrc. Mais la manière correcte de définir de telles variables d'environnement est dans / etc / environment
keiki,

34

Si vous avez installé JDK 1.6 (correspondant à Java 6) ou une version plus récente, vous devriez avoir un programme nommé jrunscriptdans votre PATH. Vous pouvez l'utiliser pour trouver le correspondant JAVA_HOME. Exemple:

$ jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'
/opt/local/jdk1.7.0_76/jre

Vous pouvez définir la variable d'environnement comme ceci:

$ export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

Notez que le JRE n'inclut pas jrunscript, donc cela ne fonctionnera que si vous installez le JDK, pas seulement le JRE.


C'était beaucoup à faire pour comprendre que je devais aller un répertoire plus loin, mais merci.
Cnizzardini

15

Une autre option portable consiste à extraire le chemin absolu du JDK à partir de javac:

export JAVA_HOME=`type -p javac|xargs readlink -f|xargs dirname|xargs dirname`

Le javacchemin absolu est passé dirnamedeux fois pour être retiré /bin/javacde la fin. L'extraction complète du répertoire va comme suit:

$ type -p javac
/usr/bin/javac

$ readlink -f /usr/bin/javac
/usr/lib/jvm/java-8-oracle/bin/javac

$ dirname /usr/lib/jvm/java-8-oracle/bin/javac
/usr/lib/jvm/java-8-oracle/bin/

$ dirname /usr/lib/jvm/java-8-oracle/bin/
/usr/lib/jvm/java-8-oracle/

1
on peut utiliser type -p javac|xargs readlink -f|xargs dirname|xargs dirname(sans la partie exportation) pour connaître le répertoire sans le configurer.
Mina Michael

Exactement ce que je cherchais! Réponse brillante!
Silviu Burcea

7

Pour prendre en compte le mécanisme update-alternatives:

$ update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre'

Vous pouvez définir la variable d'environnement comme ceci:

$ export JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre')"

Cela ne donne pas tout à fait JAVA_HOME, car il y aura toujours la fin /jre. Vous pourriez essayerexport JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | sed -e 's/Value: //;s?/jre/bin/java??;')"
James Brusey

7

Il suffit de lancer une commande

 sudo update-alternatives --config java

Ça donnera quelque chose comme

Es gibt nur eine Alternative in Link-Gruppe java (die /usr/bin/java bereitstellt): /usr/lib/jvm/java-8-oracle/jre/bin/java

À partir de cela, vous avez / usr / lib / jvm / java-8-oracle / as java home. Vous pouvez maintenant l'exporter dans la variable JAVA_HOME

export JAVA_HOME=/usr/lib/jvm/java-8-oracle/

Maintenant echo $ JAVA_HOME le montre


1

J'utilise ceci dans Ubuntu LTS (14.04 / 16.04):

[ -L /etc/alternatives/java ] && 
  export JAVA_HOME="$(readlink -f /etc/alternatives/java | sed -e 's/\/jre\/bin\/java$//')"


0

Pour Java 9 et versions ultérieures:

Cette réponse https://askubuntu.com/a/657468/963 utilise le moteur JavaScript Nashorn inclus, Nashorn, pour imprimer la java.homepropriété système. Nashorn étant obsolète, une alternative consiste à utiliser jshellintroduite dans Java 9.

echo 'System.out.println(java.lang.System.getProperty("java.home"));' | jshell  -

qui sur mon système Ubuntu 18.10 imprime:

/usr/lib/jvm/java-11-openjdk-amd64
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.