Come trovare il mio attuale JAVA_HOME su Ubuntu?


Risposte:


84

Digitare il terminale,

echo $JAVA_HOME

Visualizza il percorso della variabile JAVA_HOME.

SE NULLA APPARE, IMPOSTARE CON QUESTO

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

Ciò differirà in base al tipo e alla versione di JDK

Per la visualizzazione seguire il primo comando.

Segui questo post per utilizzare diversi JDK o passare da un JDK all'altro


Dà "/ usr / lib / jvm / java-6-sun". Ma ho installato java 7. Quando lo controllo usando "java -version", dà la versione java "1.7.0_45" Java (TM) SE Runtime Environment (build 1.7.0_45-b18) Java HotSpot (TM) Server VM (build 24.45-b08, modalità mista)
Samitha Chathuranga,

2
quindi eseguire il secondo comando per l'impostazione della variabile JAVA_HOME. NOTA: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.
Approfondisci

dovresti impostarlo in / etc / environment
keiki

@ Jax-L Ma ora quando do l'eco JAVA_HOME viene visualizzato semplicemente come "JAVA_HOME". Il percorso che ho indicato non viene visualizzato ... ???
Samitha Chathuranga,

2
l'esportazione funziona solo fino al riavvio. Oppure aggiungi l'esportazione allo script di accesso .bashrc. Ma il modo corretto di impostare tali variabili d'ambiente è in / etc / environment
keiki,

34

Se hai JDK 1.6 (corrispondente a Java 6) o una versione più recente installata, dovresti avere un programma chiamato jrunscriptnel tuo PATH. Puoi usarlo per trovare il corrispondente JAVA_HOME. Esempio:

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

È possibile impostare la variabile di ambiente in questo modo:

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

Nota che JRE non include jrunscript, quindi funzionerà solo se installi JDK, non solo JRE.


È stato molto da capire per capire che dovevo andare più a fondo in una directory, ma grazie.
Cnizzardini,

15

Un'altra opzione portatile è quella di estrarre il percorso assoluto del JDK da javac:

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

Il javacpercorso assoluto viene passato a dirnamedue volte per rimuoverlo /bin/javacdalla fine. L'estrazione completa della directory procede come segue:

$ 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
si può usare type -p javac|xargs readlink -f|xargs dirname|xargs dirname(senza la parte di esportazione) per conoscere la directory senza impostarla.
Mina Michael,

Esattamente quello che stavo cercando! Risposta brillante!
Silviu Burcea,

7

Per tenere conto del meccanismo di aggiornamento-alternative:

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

È possibile impostare la variabile di ambiente in questo modo:

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

Questo non dà abbastanza il JAVA_HOME in quanto avrà ancora il trailing /jre. Potresti provareexport JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | sed -e 's/Value: //;s?/jre/bin/java??;')"
James Brusey il

7

Basta eseguire un comando

 sudo update-alternatives --config java

Darà qualcosa di simile

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

Da questo hai / usr / lib / jvm / java-8-oracle / come java home. Ora puoi esportarlo nella variabile JAVA_HOME

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

Ora echo $ JAVA_HOME mostralo


1

Lo uso in 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

Per Java 9 e versioni successive:

Questa risposta https://askubuntu.com/a/657468/963 utilizza il motore Nashorn JavaScript allegato Nashorn per stampare la java.homeproprietà di sistema. Nashorn è deprecato, quindi un'alternativa è usare l' jshellintroduzione in Java 9.

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

che sul mio sistema Ubuntu 18.10 stampa:

/usr/lib/jvm/java-11-openjdk-amd64
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.