Wie setze ich JAVA_HOME für Java?

303

Ich habe eine Java-Version installiert. Wie können wir die $JAVA_HOMEUmgebungsvariable richtig einstellen ?

Gaurav Agarwal
quelle

Antworten:

422

Sie können Ihr Set JAVA_HOMEin /etc/profileals Petronilla Escarabajo vermuten lässt. Der bevorzugte Speicherort für JAVA_HOMEeine Systemvariable ist jedoch /etc/environment.

Öffnen Sie /etc/environmentin einem beliebigen Texteditor wie nanooder geditund fügen Sie die folgende Zeile hinzu:

JAVA_HOME="/usr/lib/jvm/open-jdk"

(Java-Pfad könnte anders sein)

Verwenden Sie sourcediesen Befehl, um die Variablen zu laden:

source /etc/environment

Überprüfen Sie dann die Variable, indem Sie diesen Befehl ausführen:

echo $JAVA_HOME

Aktualisieren

Normalerweise beziehen die meisten Linux-Systeme standardmäßig / etc / environment. Wenn Ihr System dies nicht tut, fügen Sie die folgende Zeile hinzu ~/.bashrc(Danke @pje)

source /etc/environment
Manula Waidyanatha
quelle
2
Als ich versuchte, Android Studio (das IntelliJ IDEA als Basis hat) auszuführen, hatte ich eine Fehlermeldung, die der von @ advocate sehr ähnlich war: "'tools.jar' scheint nicht im Android Studio-Klassenpfad zu sein." Nachdem ich erfolglos viel mit JAVA_HOME herumgespielt hatte, habe ich mich für studio.sh entschieden, das Shellscript, mit dem Android Studio gestartet wird. Ich habe JDK_HOME auf denselben Wert gesetzt, der für JAVA_HOME erwartet wird, und voila! Es hat sich ohne große Probleme installiert.
Hilton Fernandes
3
Stellen Sie Ihr JAVA_HOME für diejenigen, die Softwareentwicklungen durchführen, nicht in / etc / environment, es sei denn, Sie möchten jedes Mal neu starten, wenn Sie die JDK-Version wechseln.
HDave
2
Dies ist eine vorübergehende Lösung, wie andere betonten. Niemand würde Source jedes Mal ausführen wollen, wenn er seine Bash neu startet.
Yuranos87
6
Wie andere angemerkt haben, bleibt dies nicht zwischen Terminalsitzungen bestehen. Was ich getan habe, um dies zu beheben, ist nur die Zeile source /etc/environmentam Anfang meiner Bash-Konfigurationsdatei hinzugefügt, ~/.bashrcso dass alle meine Umgebungseinstellungen beim Start geladen werden. Bisher für mich gearbeitet.
pje
2
@sedulam Ich habe die Antwort aktualisiert
Manula Waidyanatha
79

So legen Sie die JAVA_HOMEUmgebungsvariable, gehen Sie wie folgt vor :

  1. Starten Sie Terminal, indem Sie auf Ihrer Tastatur Ctrl+ Alt+ drücken T.
  2. Geben Sie den folgenden Befehl ein:
    $gksudo gedit /etc/environment
  3. Abhängig davon, wo Sie Java installiert haben, müssen Sie den vollständigen Pfad angeben. In diesem Beispiel habe ich Oracle JDK 7 im /usr/lib/jvm/java-7-oracleVerzeichnis installiert .
    Scrollen Sie zum Ende der Datei und geben Sie Folgendes ein:
    JAVA_HOME=/usr/lib/jvm/java-7-oracle
    export JAVA_HOME
  4. Speichern Sie Ihre Datei und beenden Sie gedit .
  5. Zuletzt laden Sie den Systempfad mit dem folgenden Befehl neu:
    $. /etc/environment

Die oben beschriebene Methode erspart Ihnen den Aufwand, die Befehle jedes Mal ausführen zu müssen, wenn Sie sich bei Ihrem Computer anmelden.

Petronilla Escarabajo
quelle
5
Wie geht das? / etc / umweltarbeit?
Sudip Bhandari
1
Ist die Hinzufügung des exportBefehls in der erforderlich /etc/environment?
Karamol
@pkaramol Ich musste export JAVA_HOME auf 16.04LTS hinzufügen, damit es beim Start geladen wird.
Aden-s
3
@ adeen-s Du hast exporteinen Line-In hinzugefügt /etc/environmentund es hat geholfen? Diese Datei enthält Variablendefinitionen, die als =-begrenzte Name-Wert-Paare analysiert werden. Sein Inhalt wird nicht als Kommando ausgeführt. (Siehe man pam_env.) Wenn Sie die Datei also nicht separat wie ein Skript behandeln (z. B. indem Sie /etc/environmentan bash ./ sourcebuiltin übergeben), würde ich nicht erwarten, dass dies funktioniert.
Eliah Kagan
> Wie geht das? / etc / umweltarbeit? -. (Punkt) lädt Befehle aus einer Datei askubuntu.com/a/232938/189965
Roman Bekkiev
37

Wenn Sie den Pfad nicht kennen und nur openJDK installiert haben, können update-alternatives --config javaSie eingeben und sollten den Pfad finden. Um die Variable zu setzen, können Sie schreiben, JAVA_HOME=<PATH>gefolgt von export JAVA_HOME. Beachten Sie, dass beim Deklarieren der Variablen kein Leerzeichen vorhanden ist. Um zu überprüfen, ob die Variable gespeichert ist, geben Sie einfach echo $JAVA_HOMEeine Bestätigung ein.

Erro
quelle
Dies scheint statisch zu sein. Wenn ich openjdk-7 entferne und openjdk-9 installiere, zeigt JAVA_HOME dann nicht auf den falschen Ort? Wie kann es dynamisch gemacht werden?
DavidJ
3
Indem Sie es manuell ändern. Wieder einmal bist DU der Weg, wie es dynamisch wird ...
HDave
@HDave bedeutet, dass Sie in bestimmten Fällen möchten, dass JAVA_HOME auf eine bestimmte Java-Version verweist, sodass das dynamische Aktualisieren von JAVA_HOME möglicherweise nicht Ihren Wünschen entspricht.
Maciej
Ich mag diese Antwort. Ich habe mit Echo getestet und sehe meinen Weg. Ich bin jedoch verwirrt, warum ich immer noch die Umgebungsvariable JAVA_HOME erhalte , wenn ich mvn -version
Winnemucca am
1
Ich schrieb diese Antwort zurück, als ich unwissender war. Das Festlegen der Variablen wie beschrieben wirkt sich nur auf Ihre aktuelle Terminalsitzung aus und wird nicht beibehalten. Der richtige Weg ist zum update-alternatives --install <link> <name> <target> <priority> Beispiel:update-alternatives --install /usr/bin/java java /usr/lib/jvm/default-runtime/bin/java 1
Erro