JAVA_HOME-Verzeichnis unter Linux

Lesezeit: 5 Minuten

Benutzer-Avatar
Fortschrittsprogrammierer

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.

Benutzer-Avatar
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, dass readlink auf mac geht das nicht GNU Version, also habe ich ausgeschlossen -f für die Mac-Version des Skripts. Mac-Benutzer, die die GNU Version von readlink 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

Benutzer-Avatar
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

Benutzer-Avatar
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 javadie 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

Benutzer-Avatar
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

Benutzer-Avatar
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

Benutzer-Avatar
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.

1246880cookie-checkJAVA_HOME-Verzeichnis unter Linux

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy