Jak znaleźć mój obecny JAVA_HOME w Ubuntu?

55

Jak znaleźć mój obecny JAVA_HOME w Ubuntu? Muszę ustawić ścieżkę java_home podczas instalacji maven.

Samitha Chathuranga
źródło

Odpowiedzi:

84

Wpisz terminal,

echo $JAVA_HOME

Wyświetl ścieżkę zmiennej JAVA_HOME.

JEŻELI NIC SIĘ NIE WYJAŚNI, NALEŻY TO USTAWIĆ

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

Różni się to w zależności od typu i wersji JDK

Aby wyświetlić, wykonaj pierwsze polecenie.

Śledź ten post, aby używać różnych JDK lub przełączać się między JDK

Pogłębiać
źródło
Daje to "/ usr / lib / jvm / java-6-sun". Ale zainstalowałem java 7. Kiedy sprawdzam za pomocą „java -version”, daje java wersję „1.7.0_45” Java (TM) SE Runtime Environment (kompilacja 1.7.0_45-b18) Java HotSpot (TM) Server VM (kompilacja 24.45-b08, tryb mieszany)
Samitha Chathuranga
2
następnie wykonaj drugie polecenie, aby ustawić zmienną JAVA_HOME. UWAGA: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.
Pogłębienie
powinieneś ustawić go w / etc / environment
keiki
@ Jax-L Ale teraz, kiedy daję echo JAVA_HOME, wyświetla się ono po prostu jako „JAVA_HOME”. Ścieżka, którą podałem, nie wyświetla ... ???
Samitha Chathuranga
2
eksport działa tylko do momentu ponownego uruchomienia. Lub dodajesz eksport do skryptu logowania .bashrc. Ale poprawnym sposobem ustawienia takich zmiennych środowiskowych jest / etc / environment
keiki
34

Jeśli masz JDK 1.6 (odpowiadający Java 6) lub nowszą wersję, powinieneś mieć program o nazwie jrunscriptw twoim PATH. Możesz użyć tego, aby znaleźć odpowiedni JAVA_HOME. Przykład:

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

Możesz ustawić zmienną środowiskową w następujący sposób:

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

Pamiętaj, że środowisko JRE nie obejmuje jrunscript, więc zadziała to tylko wtedy, gdy zainstalujesz JDK, a nie tylko środowisko JRE.

Rob Mayoff
źródło
To było wiele do zrobienia, aby dowiedzieć się, że muszę wejść o jeden katalog głębiej, ale dzięki.
cnizzardini
15

Inną przenośną opcją jest wyodrębnienie absolutnej ścieżki JDK z javac:

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

Ścieżka bezwzględna javacjest przekazywana dirnamedwukrotnie do usunięcia /bin/javacz końca. Całkowite rozpakowanie katalogu przebiega następująco:

$ 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
źródło
1
można użyć type -p javac|xargs readlink -f|xargs dirname|xargs dirname(bez części eksportu), aby poznać katalog bez ustawiania go.
Mina Michael,
Dokładnie tego szukałem! Genialna odpowiedź!
Silviu Burcea
7

Aby wziąć pod uwagę mechanizm aktualizacji alternatyw:

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

Możesz ustawić zmienną środowiskową w następujący sposób:

$ export JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre')"
Francisco
źródło
To nie całkiem daje JAVA_HOME, ponieważ nadal będzie miał końcowy ciąg /jre. Możesz spróbowaćexport JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | sed -e 's/Value: //;s?/jre/bin/java??;')"
James Brusey
7

Po prostu uruchom polecenie

 sudo update-alternatives --config java

To da coś takiego

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

Z tego masz / usr / lib / jvm / java-8-oracle / as java home. Możesz teraz wyeksportować go do zmiennej JAVA_HOME

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

Teraz wyświetl echo $ JAVA_HOME

vimal krishna
źródło
1

Używam tego w Ubuntu LTS (14.04 / 16.04):

[ -L /etc/alternatives/java ] && 
  export JAVA_HOME="$(readlink -f /etc/alternatives/java | sed -e 's/\/jre\/bin\/java$//')"
Grgrandes
źródło
0

W przypadku Java 9 i nowszych:

Ta odpowiedź https://askubuntu.com/a/657468/963 korzysta z dołączonego silnika Nashorn JavaScript Nashorn do wydrukowania java.homewłaściwości systemowej. Nashorn jest przestarzały, więc alternatywą jest użycie jshellwprowadzone w Javie 9.

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

które na moim systemie Ubuntu 18.10 drukuje:

/usr/lib/jvm/java-11-openjdk-amd64
Thorbjørn Ravn Andersen
źródło