Wie finde ich mein aktuelles JAVA_HOME in Ubuntu?


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


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.


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/

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')"

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


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$//')"


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.