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?

dinesh707
quelle
1
Linux Distribution: Debian 2.6.26
dinesh707
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).

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

Paŭlo Ebermann
quelle
1
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.

forcefsck
quelle
7
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
Upen
30
$ which java 

sollte dir so etwas geben

/usr/bin/java
Der Surrican
quelle
2
wahr. Ich wette, es ist nach apt-get Installation
The Surrican
6
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

which javac

oder

cd /
find . -name 'javac'
Andrew T Finnell
quelle
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

find /usr -name java 2> /dev/null
Brent Worden
quelle
1
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.

Anzeigen aller Informationen zu Java

alternatives --display java
Iankits
quelle
1
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

Anubhav Gupta
quelle
2

Einfach, probieren Sie es aus:

Es ist / usr / local / java / jdk [version]

Ashansu Pant
quelle
1

Der Befehl: sudo update-alternatives --config javafindet den vollständigen Pfad aller installierten Java-Versionen

Hasan
quelle
1

Diese Frage scheint immer noch relevant zu sein, und die Antwort scheint ein bewegliches Ziel zu sein.

Auf meinem Debian-System (Buster):

> update-java-alternatives -l
java-1.11.0-openjdk-amd64      1111       /usr/lib/jvm/java-1.11.0-openjdk-amd64

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.

Fürchte Quixadhal
quelle
0

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é

Niederländischer Ruhm
quelle
0

Unter Linux Fedora30 stehen verschiedene Versionen des vollständigen Java-JDK zur Verfügung, insbesondere Paketnamen:

java-1.8.0-openjdk-devel.x86_64 
java-11-openjdk-devel.x86_64

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/lib/jvm/java-1.8.0-openjdk
/usr/lib/jvm/java-11-openjdk
Grant Rostig
quelle
0

Dies ist der beste Weg, der für mich funktioniert hat. Führen Sie diesen Befehl aus: -

$(dirname $(readlink $(which javac)))/java_home
Manish Sharma
quelle