Comment trouver mon JAVA_HOME actuel dans Ubuntu?

55

Comment trouver mon JAVA_HOME actuel dans Ubuntu? Je dois définir le chemin java_home lors de l'installation de maven.

Samitha Chathuranga
la source

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

Approfondir
la source
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.

rob mayoff
la source
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/
rzymek
la source
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')"
Francisco
la source
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

Vimal Krishna
la source
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$//')"
grandes
la source
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
Thorbjørn Ravn Andersen
la source