Wo finde ich das Java SDK unter Linux nach der Installation?
185
Ich habe JDK mit apt-get install installiert, weiß aber nicht, wo sich mein jdk-Ordner befindet. Ich muss den Weg dafür festlegen. Hat jemand eine Ahnung von dem Ort?
Versuchen Sie es /usr/local/java/mit original heruntergeladenen Oracle-Distributionen.
Zon
Antworten:
385
Dies hängt ein wenig von Ihrem Paketsystem ab. Wenn der javaBefehl funktioniert, können Sie eingeben readlink -f $(which java), um den Speicherort des Java-Befehls zu ermitteln. Auf dem OpenSUSE-System, auf dem ich mich gerade befinde, kehrt es zurück /usr/lib64/jvm/java-1.6.0-openjdk-1.6.0/jre/bin/java(aber dies ist kein System, das verwendet apt-get).
Unter Ubuntu sieht es so aus, als wäre es/usr/lib/jvm/java-6-openjdk/ für OpenJDK und in einem anderen Unterverzeichnis von /usr/lib/jvm/Suns JDK (und anderen Implementierungen, glaube ich).
Für jedes Paket können Sie bestimmen, welche Dateien installiert werden und wo sie installiert werden, indem Sie dpkg abfragen. Zum Beispiel für das Paket 'openjdk-6-jdk':dpkg -L openjdk-6-jdk
orth sucht in / usr / java auch auf einigen Setups, die ich gesehen habe
jlb83
Wenn Sie den JDK-Pfad in Android Studio hinzufügen möchten, fügen Sie dieses / usr / lib / jvm / java-8-oracle /
Rohit Rokde
3
Es scheint, mein Weg ist /usr/lib/jvm/java-7-openjdk-amd64.
Einverne
2
Ich denke, dass der angegebene Readlink am elegantesten (und effizientesten) ist, aber ich schlage vor readlink -f $(which javac) - beachten Sie das 'c', falls sich auf demselben Computer eine seltsame Mischung aus JDK und JRE befindet. Das JDK enthält einen Compiler (javac) und eine JRE nicht. Wenn der Pfad jedoch nicht korrekt ist, schlägt dies fehl und Sie können dies versuchen: find /usr/java -wholename '*ava/jdk*' -prunewie ich in einem Kommentar unten vermerke.
Steven der leicht amüsierte
@ Winnemucca Es funktioniert für mich, Sie können finden, wo Java ist und dann können Sie finden, wo JDK-Pfad.
Einverne
45
update-java-alternatives -l
Hier erfahren Sie, welche Java-Implementierung die Standardeinstellung für Ihr System ist und wo sie im Dateisystem installiert ist. Weitere Optionen finden Sie im Handbuch.
Dies ist (zumindest) debian-spezifisch. Andere Distributionen haben dies möglicherweise nicht
Dequis
2
@dequis, es ist eine Antwort speziell für Debian, da die Frage erwähnt apt-getund die Distribution sein soll Debian 2.6.26. AFAIK, es sollte für alle Debian-Derivate gleich sein.
Forcefsck
2
Ich mache nur auf andere Leute aufmerksam. Ich weiß, dass es für diese spezielle Frage gültig ist.
Dequis
1
Update-Alternativen - Liste | grep java arbeitete für mich an RHEL
Dies weist nicht auf ein vollständiges JDK hin. 1. Es ist ein Symlink, und selbst wenn Sie den Symlink lesen, befindet sich die Binärdatei nicht in einem JDK. Wenn ich zum Beispiel den Befehl ausführe, wird readlink -f $(which javac)er gedruckt /usr/lib/jvm/java-8-oracle/bin/javac. Dieser bin-Ordner ist KEIN JDK. Allgemeiner Säure-Base-Test, um festzustellen, ob es sich um ein JDK handelt, um festzustellen, ob der Strom $JAVA_HOMEeinen Pfad von enthält lib/tools.jar. In der Besetzung /usr/lib/jvm/java-8-oracle/binist das nicht wahr, daher ist es kein JDK.
Zombies
Auf Centos / RHL Dies ist, was ich bevorzuge, um das JDK zu finden (falls installiert). Das find /usr/java -wholename '*ava/jdk*' -prune Verhalten hängt jedoch davon ab, ob Sie über OpenJDK oder Oracle Java sprechen und wie es überhaupt installiert wurde.
Steven der leicht amüsierte
12
Diese Frage wird verschoben, aber Sie können Folgendes tun
Ich mag die zweite Option - einfach und nützlich, wenn Sie mehrere JREs / JDKs haben und alle finden möchten.
Amos M. Carpenter
"find / -name 'javac'" ist weniger typisierend, erfordert jedoch Administratorrechte (root), oder Sie erhalten viele Nachrichten, denen Berechtigungen verweigert wurden.
Steven der leicht amüsierte
9
Verwenden Sie find, um es zu lokalisieren. Es sollte /usrirgendwo unter sein :
find /usr -name java
Wenn beim Ausführen des Befehls zu viele Meldungen "Berechtigung verweigert" die tatsächlich gefundenen Ergebnisse verschleiern, leiten Sie stderr einfach nach / dev / null um
Wenn nicht root (admin), erhalten Sie viele Nachrichten, denen die Berechtigung verweigert wurde.
Steven der leicht amüsierte
7
Eine andere beste Möglichkeit, den Java-Ordnerpfad zu finden, ist die Verwendung des alternativesBefehls in Fedora Linux (ich weiß, dass er für Ubuntu ist, aber ich habe diesen Beitrag von Google nur anhand der Überschrift aufgerufen). Ich möchte nur teilen, falls Leute wie ich nach Antworten für den Fedora-Geschmack suchen.
Dies funktionierte für mich und gab / usr / java / jdk- [version] auf Fedora
Sina Madani
3
Dreistufiger Prozess: Erstens: Öffnen Sie Terminal-> $ whereis java
, um eine Ausgabe wie folgt zu erhalten:
java: /usr/bin/java /usr/share/java /usr/share/man/man1/java.1.gz
Zweitens:
ls -l /usr/bin/java
Es würde eine Ausgabe wie folgt ergeben:
lrwxrwxrwx 1 root root 22 Feb 9 10:59 /usr/bin/java -> /etc/alternatives/java
Drittens:
ls -l /etc/alternatives/java
Ausgabe ist der JDK-Pfad:
lrwxrwxrwx 1 root root 46 Feb 9 10:59 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
Wenn Sie jedoch tatsächlich dorthin gehen, werden Sie feststellen, dass das Paketsystem dort mehrere Verzeichnisse und symbolische Links platziert, um die zukünftige Wartung zu vereinfachen.
Das eigentliche Verzeichnis ist java-11-openjdk-amd64mit einem weiteren Symlink von default-java. Es gibt auch ein openjdk-11Verzeichnis, aber es scheint nur eine source.zip-Datei zu enthalten.
Vor diesem Hintergrund würde ich NUR für Debian den besten Wert verwenden /usr/lib/jvm/default-java, da dieser immer gültig sein sollte, selbst wenn Sie sich entscheiden, eine völlig andere Version von Java zu installieren oder sogar den Anbieter zu wechseln.
Der normale Grund, den Pfad kennen zu wollen, liegt darin, dass eine Anwendung dies wünscht und Sie wahrscheinlich nicht möchten, dass diese App beschädigt wird, weil Sie ein Upgrade durchgeführt haben, bei dem die Versionsnummern geändert wurden.
Unter OpenSUSE 13.1 / 13.2 /usr/lib64/jvm/java-1.6.0-openjdk-(version-number)
kann die Versionsnummer 1.7.x 1.8.x usw. sein. Überprüfen Sie den Software-Manager, welche Version Sie installiert haben ...
Einmal installiert, befinden sie sich in: /usr/lib/jvm
Um den Speicherort / das Verzeichnis eines vollständigen Entwicklungs-JDK auszuwählen (der sich von der einfacheren Laufzeit-JRE unterscheidet), suchen Sie nach Einträgen:
ls -ld java*openjdk*
Hier sind zwei gute Optionen: Links zu bestimmten Versionen, bei denen Sie die Version auswählen müssen:
/usr/local/java/
mit original heruntergeladenen Oracle-Distributionen.Antworten:
Dies hängt ein wenig von Ihrem Paketsystem ab. Wenn der
java
Befehl funktioniert, können Sie eingebenreadlink -f $(which java)
, um den Speicherort des Java-Befehls zu ermitteln. Auf dem OpenSUSE-System, auf dem ich mich gerade befinde, kehrt es zurück/usr/lib64/jvm/java-1.6.0-openjdk-1.6.0/jre/bin/java
(aber dies ist kein System, das verwendetapt-get
).Unter Ubuntu sieht es so aus, als wäre es
/usr/lib/jvm/java-6-openjdk/
für OpenJDK und in einem anderen Unterverzeichnis von/usr/lib/jvm/
Suns JDK (und anderen Implementierungen, glaube ich).Debian ist das gleiche.
Für jedes Paket können Sie bestimmen, welche Dateien installiert werden und wo sie installiert werden, indem Sie dpkg abfragen. Zum Beispiel für das Paket 'openjdk-6-jdk':
dpkg -L openjdk-6-jdk
quelle
/usr/lib/jvm/java-7-openjdk-amd64
.readlink -f $(which javac)
- beachten Sie das 'c', falls sich auf demselben Computer eine seltsame Mischung aus JDK und JRE befindet. Das JDK enthält einen Compiler (javac) und eine JRE nicht. Wenn der Pfad jedoch nicht korrekt ist, schlägt dies fehl und Sie können dies versuchen:find /usr/java -wholename '*ava/jdk*' -prune
wie ich in einem Kommentar unten vermerke.Hier erfahren Sie, welche Java-Implementierung die Standardeinstellung für Ihr System ist und wo sie im Dateisystem installiert ist. Weitere Optionen finden Sie im Handbuch.
quelle
apt-get
und die Distribution sein sollDebian 2.6.26
. AFAIK, es sollte für alle Debian-Derivate gleich sein.sollte dir so etwas geben
quelle
readlink -f $(which javac)
er gedruckt/usr/lib/jvm/java-8-oracle/bin/javac
. Dieser bin-Ordner ist KEIN JDK. Allgemeiner Säure-Base-Test, um festzustellen, ob es sich um ein JDK handelt, um festzustellen, ob der Strom$JAVA_HOME
einen Pfad von enthältlib/tools.jar
. In der Besetzung/usr/lib/jvm/java-8-oracle/bin
ist das nicht wahr, daher ist es kein JDK.find /usr/java -wholename '*ava/jdk*' -prune
Verhalten hängt jedoch davon ab, ob Sie über OpenJDK oder Oracle Java sprechen und wie es überhaupt installiert wurde.Diese Frage wird verschoben, aber Sie können Folgendes tun
oder
quelle
Verwenden Sie find, um es zu lokalisieren. Es sollte
/usr
irgendwo unter sein :Wenn beim Ausführen des Befehls zu viele Meldungen "Berechtigung verweigert" die tatsächlich gefundenen Ergebnisse verschleiern, leiten Sie stderr einfach nach / dev / null um
quelle
Eine andere beste Möglichkeit, den Java-Ordnerpfad zu finden, ist die Verwendung des
alternatives
Befehls in Fedora Linux (ich weiß, dass er für Ubuntu ist, aber ich habe diesen Beitrag von Google nur anhand der Überschrift aufgerufen). Ich möchte nur teilen, falls Leute wie ich nach Antworten für den Fedora-Geschmack suchen.Anzeigen aller Informationen zu Java
quelle
Dreistufiger Prozess: Erstens: Öffnen Sie Terminal->
$ whereis java
, um eine Ausgabe wie folgt zu erhalten:java: /usr/bin/java /usr/share/java /usr/share/man/man1/java.1.gz
Zweitens:
ls -l /usr/bin/java
Es würde eine Ausgabe wie folgt ergeben:lrwxrwxrwx 1 root root 22 Feb 9 10:59 /usr/bin/java -> /etc/alternatives/java
Drittens:
ls -l /etc/alternatives/java
Ausgabe ist der JDK-Pfad:lrwxrwxrwx 1 root root 46 Feb 9 10:59 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
quelle
Einfach, probieren Sie es aus:
Es ist / usr / local / java / jdk [version]
quelle
Der Befehl:
sudo update-alternatives --config java
findet den vollständigen Pfad aller installierten Java-Versionenquelle
Diese Frage scheint immer noch relevant zu sein, und die Antwort scheint ein bewegliches Ziel zu sein.
Auf meinem Debian-System (Buster):
Wenn Sie jedoch tatsächlich dorthin gehen, werden Sie feststellen, dass das Paketsystem dort mehrere Verzeichnisse und symbolische Links platziert, um die zukünftige Wartung zu vereinfachen.
Das eigentliche Verzeichnis ist
java-11-openjdk-amd64
mit einem weiteren Symlink vondefault-java
. Es gibt auch einopenjdk-11
Verzeichnis, aber es scheint nur eine source.zip-Datei zu enthalten.Vor diesem Hintergrund würde ich NUR für Debian den besten Wert verwenden
/usr/lib/jvm/default-java
, da dieser immer gültig sein sollte, selbst wenn Sie sich entscheiden, eine völlig andere Version von Java zu installieren oder sogar den Anbieter zu wechseln.Der normale Grund, den Pfad kennen zu wollen, liegt darin, dass eine Anwendung dies wünscht und Sie wahrscheinlich nicht möchten, dass diese App beschädigt wird, weil Sie ein Upgrade durchgeführt haben, bei dem die Versionsnummern geändert wurden.
quelle
Unter OpenSUSE 13.1 / 13.2
/usr/lib64/jvm/java-1.6.0-openjdk-(version-number)
kann die Versionsnummer 1.7.x 1.8.x usw. sein. Überprüfen Sie den Software-Manager, welche Version Sie installiert haben ...
André
quelle
Unter Linux Fedora30 stehen verschiedene Versionen des vollständigen Java-JDK zur Verfügung, insbesondere Paketnamen:
Einmal installiert, befinden sie sich in:
/usr/lib/jvm
Um den Speicherort / das Verzeichnis eines vollständigen Entwicklungs-JDK auszuwählen (der sich von der einfacheren Laufzeit-JRE unterscheidet), suchen Sie nach Einträgen:
Hier sind zwei gute Optionen: Links zu bestimmten Versionen, bei denen Sie die Version auswählen müssen:
quelle
Dies ist der beste Weg, der für mich funktioniert hat. Führen Sie diesen Befehl aus: -
quelle