Gibt es einen Linux-Befehl, mit dem ich das herausfinden könnte? JAVA_HOME
Verzeichnis? Ich habe versucht, die Umgebungsvariablen (“env”) auszudrucken, aber ich kann das Verzeichnis nicht finden.
JAVA_HOME-Verzeichnis unter Linux
Fortschrittsprogrammierer
jsdevel
Unter Linux können Sie ausführen $(dirname $(dirname $(readlink -f $(which javac))))
Auf Mac können Sie ausführen $(dirname $(readlink $(which javac)))/java_home
Bei Windows bin ich mir nicht sicher, aber ich nehme es an where javac
würde dir ziemlich nahe kommen
-
Dies ist eine großartige Lösung, aber denken Sie daran, das kanonische Flag für readlink zu verwenden, da Java mit mehreren Links eingerichtet werden kann, verwenden Sie es also
$(dirname $(dirname $(readlink -f $(which javac))))
stattdessen unter Linux– Matthew O’Riordan
3. August 2014 um 12:22 Uhr
-
Danke @MatthewO’Riordan! Ich habe die hinzugefügt
-f
Flag für den Linux-Befehl. Beachten Sie, dassreadlink
auf mac geht das nichtGNU
Version, also habe ich ausgeschlossen-f
für die Mac-Version des Skripts. Mac-Benutzer, die dieGNU
Version vonreadlink
installiert über brew verwenden können-f
.– jsdevel
14. November 2015 um 9:33 Uhr
-
Dies ist besonders nett für Leute, die /etc/alternatives verwenden, um verschiedene Java-Versionen zu verwalten.
– gilbertpilz
5. Januar 2016 um 22:11 Uhr
-
Dies ist die beste Lösung, um alle Home-Pfade zu finden. Ich benutze es häufig für Java, Maven und so weiter! Vielen Dank!
– Martin Majewski
1. Oktober 2018 um 10:31 Uhr
-
Ah, egal, die Absicht ist klarer mit einem Echo davor:
echo $(dirname $(dirname $(readlink -f $(which javac))))
– 6005
3. November 2021 um 14:14 Uhr
AdamC
echo $JAVA_HOME
druckt den Wert, wenn er gesetzt ist. Wenn Sie es jedoch nicht manuell in Ihren Startskripten festgelegt haben, ist es wahrscheinlich nicht festgelegt.
Wenn du es versuchst which java
und es nichts findet, ist Java möglicherweise nicht auf Ihrem Computer installiert oder befindet sich zumindest nicht in Ihrem Pfad. Je nachdem, welche Linux-Distribution Sie haben und ob Sie Root-Zugriff haben oder nicht, können Sie zu gehen http://www.java.com um die gewünschte Version herunterzuladen. Dann können Sie JAVA_HOME so einstellen, dass es auf dieses Verzeichnis zeigt. Denken Sie daran, dass dies nur eine Konvention ist und nicht verwendet werden sollte, um festzustellen, ob Java installiert ist oder nicht.
-
JAVA_HOME ist in Linux-Systemen nicht mehr definiert und veraltet.
– Peter Quiring
3. November 2014 um 20:07 Uhr
-
@PeterQuiring Sie sollten Ihre Quelle für diese Aussage zitieren. Sie liegen ziemlich falsch.
– Harschware
26. Juni 2015 um 0:02 Uhr
-
@harschware Wenn ich Ubuntu installiere, ist JAVA_HOME nicht gesetzt, auch wenn das JDK installiert ist. Lesen Sie auch /usr/share/doc/openjdk-8-jre-headless/JAVA_HOME und es heißt, dass JAVA_HOME nicht mehr benötigt werden sollte (Legacy).
– Peter Quiring
27. Juni 2015 um 1:49 Uhr
-
@PeterQuiring Danke Peter, leider habe ich keinen einfachen Zugriff auf diese Datei. Vielleicht gibt es Bemühungen, es in Java 8 zu verwerfen, aber die schiere Anzahl von Tools, die auf JAVA_HOME angewiesen sind, wird es erforderlich machen, die Variable noch viele Jahre lang zu definieren …
– Harschware
27. Juni 2015 um 19:41 Uhr
-
@harschware Es könnte nur eine Ubuntu-Sache sein. Vielleicht definieren andere Distributionen es noch.
– Peter Quiring
28. Juni 2015 um 20:12 Uhr
Parth Mehrotra
Nur eine andere Lösung, die plattformübergreifende (uses java
) und verweist Sie auf den Speicherort der jre.
java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home'
Gibt alle aus java
die aktuellen Einstellungen von und findet die angerufene java.home
.
Für Windows können Sie findstr anstelle von grep verwenden.
java -XshowSettings:properties -version 2>&1 | findstr "java.home"
-
Ich habe viele Möglichkeiten recherchiert, JAVA_HOME zu finden, und ich denke, dies ist eine der besten! Danke für die Erwähnung!
– drwatsoncode
5. April 2017 um 1:54 Uhr
-
Schön, dass es geholfen hat!
– Parth Mehrotra
7. April 2017 um 1:37 Uhr
-
Es ist wahrscheinlich erwähnenswert, dass dies mit JDK1.7 (IIRC) zu arbeiten begann. Davor hätten Sie anrufen müssen:
jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'
. In beiden Fällen ist es für plattformübergreifende Aspekte empfehlenswert, ein voranzustellen/usr/bin/env
.– ikaerom
24. April 2017 um 17:47 Uhr
-
Holy Moly, das funktioniert besser als alle anderen, danke!
– Harvey Lin
22. Juni 2018 um 0:22 Uhr
-
Das ist die bessere Antwort.
– DR_
18. Juli 2018 um 14:22 Uhr
cevaris
Ich weiß, das ist spät, aber dieser Befehl durchsucht das /usr/-Verzeichnis, um Java für Sie zu finden
sudo find /usr/ -name *jdk
Ergebnisse zu
/usr/lib/jvm/java-6-openjdk
/usr/lib/jvm/java-1.6.0-openjdk
Zu Ihrer Information, wenn Sie einen Mac verwenden, befindet sich JAVA_HOME derzeit unter
/System/Library/Frameworks/JavaVM.framework/Home
Um den Wert einer Umgebungsvariablen anzuzeigen, verwenden Sie:
echo $VARIABLE
also in deinem Fall:
echo $JAVA_HOME
Falls Sie es nicht eingestellt haben, können Sie Ihre hinzufügen .bashrc
Datei:
export JAVA_HOME=$(readlink -f /usr/bin/java | sed “s:bin/java::”)
und es ändert sich dynamisch, wenn Sie Ihre Pakete aktualisieren.
-
Unsicherer sed-Befehl: Was wäre, wenn /usr/bin/java ein Symlink zu wäre
/usr/bin/java-8/bin/java
? Sie würden die Ausgabe erhalten/usr/-8/bin/java
.– GKFX
8. September 2016 um 20:25 Uhr
-
Fantastische Lösung! Wenn Sie jdk anstelle von jre als Home verwenden möchten, passen Sie einfach readlink -f /usr/bin/java | an sed “s:jre/bin/java::”
– Cybervergessenheit
26. Januar 2017 um 15:18 Uhr
dnozay
Wenn $JAVA_HOME
ist in Ihrer Umgebung definiert…
$ echo $JAVA_HOME
$ # I am not lucky...
Sie können es anhand der geladenen Klassen erraten.
$ java -showversion -verbose 2>&1 | head -1
[Opened /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64/jre/lib/rt.jar]
Diese Methode stellt sicher, dass Sie das Richtige finden jdk
/jre
Wird verwendet, wenn mehrere Installationen vorhanden sind.
Oder verwenden strace
:
$ strace -e open java -showversion 2>&1 | grep -m1 /jre/
open("/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64/jre/bin/../lib/amd64/jli/tls/x86_64/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
-
Unsicherer sed-Befehl: Was wäre, wenn /usr/bin/java ein Symlink zu wäre
/usr/bin/java-8/bin/java
? Sie würden die Ausgabe erhalten/usr/-8/bin/java
.– GKFX
8. September 2016 um 20:25 Uhr
-
Fantastische Lösung! Wenn Sie jdk anstelle von jre als Home verwenden möchten, passen Sie einfach readlink -f /usr/bin/java | an sed “s:jre/bin/java::”
– Cybervergessenheit
26. Januar 2017 um 15:18 Uhr
Michael Aaron Safjan
Geben Sie im Terminal Folgendes ein:
echo “$JAVA_HOME”
Wenn Sie nichts erhalten, wurde Ihre Umgebungsvariable JAVA_HOME nicht gesetzt. Sie können versuchen, mit „locate java“ herauszufinden, wo sich Ihre Java-Installation befindet.