Wie finde ich mein aktuelles JAVA_HOME in Ubuntu?

55

Wie finde ich mein aktuelles JAVA_HOME in Ubuntu? Ich muss den Pfad java_home festlegen, wenn ich maven installiere.

Samitha Chathuranga
quelle

Antworten:

84

Geben Sie das Terminal ein,

echo $JAVA_HOME

JAVA_HOME-Variablenpfad anzeigen.

WENN NICHTS ERSCHEINT, STELLEN SIE ES MIT DIESEM EIN

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

Dies ist je nach JDK-Typ und -Version unterschiedlich

Befolgen Sie zum Anzeigen den ersten Befehl.

Befolgen Sie diesen Beitrag, um verschiedene JDKs zu verwenden oder zwischen JDKs zu wechseln

Vertiefen
quelle
Es gibt "/ usr / lib / jvm / java-6-sun". Aber ich habe Java 7 installiert. Wenn ich es mit "java -version" überprüfe, gibt es Java-Version "1.7.0_45". Java (TM) SE-Laufzeitumgebung (Build 1.7.0_45-b18) Java HotSpot (TM) Server VM (Build 24.45-b08, gemischter Modus)
Samitha Chathuranga
2
Führen Sie dann den zweiten Befehl zum Setzen der Variablen JAVA_HOME aus. HINWEIS: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.
3.
Sie sollten es in / etc / environment
keiki
@ Jax-L Aber jetzt, wenn ich Echo JAVA_HOME gebe, wird es nur als "JAVA_HOME" angezeigt. Der von mir angegebene Pfad wird nicht angezeigt ... ???
Samitha Chathuranga
2
Der Export funktioniert nur, bis Sie neu starten. Oder Sie fügen dem .bashrc-Anmeldeskript einen Export hinzu. Der richtige Weg, solche Umgebungsvariablen zu setzen, ist in / etc / environment
keiki
34

Wenn Sie JDK 1.6 (entsprechend Java 6) oder eine neuere Version installiert haben, sollten Sie ein Programm mit dem Namen jrunscriptin Ihrem haben PATH. Sie können dies verwenden, um die entsprechenden zu finden JAVA_HOME. Beispiel:

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

Sie können die Umgebungsvariable folgendermaßen festlegen:

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

Beachten Sie, dass die JRE nicht enthalten jrunscriptist. Dies funktioniert also nur, wenn Sie das JDK und nicht nur die JRE installieren.

rob mayoff
quelle
Das war eine Menge zu durchlaufen, um herauszufinden, ich musste ein Verzeichnis tiefer gehen, aber danke.
cnizzardini
15

Eine weitere tragbare Option besteht darin, den absoluten Pfad des JDK zu extrahieren aus javac:

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

Der absolute javacPfad wird dirnamezweimal übergeben, um ihn /bin/javacvom Ende zu entfernen . Die vollständige Extraktion des Verzeichnisses erfolgt wie folgt:

$ 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
quelle
1
Man kann type -p javac|xargs readlink -f|xargs dirname|xargs dirname(ohne den Exportteil) das Verzeichnis kennen, ohne es zu setzen.
Mina Michael
Genau das, wonach ich gesucht habe! Geniale Antwort!
Silviu Burcea
7

So berücksichtigen Sie den Mechanismus für Aktualisierungsalternativen:

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

Sie können die Umgebungsvariable folgendermaßen festlegen:

$ export JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre')"
Francisco
quelle
Dies gibt dem JAVA_HOME nicht so recht, da es immer noch den Trailing hat /jre. Sie könnten versuchenexport JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | sed -e 's/Value: //;s?/jre/bin/java??;')"
James Brusey
7

Führen Sie einfach einen Befehl aus

 sudo update-alternatives --config java

Es wird sowas geben

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

Daraus haben Sie / usr / lib / jvm / java-8-oracle / als Java-Startseite. Sie können es jetzt in die Variable JAVA_HOME exportieren

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

Jetzt echo $ JAVA_HOME show it

Vimal Krishna
quelle
1

Ich benutze dies 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$//')"
ggrandes
quelle
0

Für Java 9 und höher:

Diese Antwort https://askubuntu.com/a/657468/963 verwendet die beiliegende Nashorn-JavaScript-Engine Nashorn, um die java.homeSystemeigenschaft auszudrucken . Nashorn ist veraltet, eine Alternative ist jshelldie in Java 9 eingeführte.

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

was auf meinem Ubuntu 18.10 System druckt:

/usr/lib/jvm/java-11-openjdk-amd64
Thorbjørn Ravn Andersen
quelle