Wo ist Java unter Mac OS X installiert?


726

Ich habe gerade Java 7u17 unter Mac OS 10.7.5 von hier heruntergeladen und es dann erfolgreich installiert. Um etwas JNI-Programmierung durchführen zu können, muss ich wissen, wo Java auf meinem Mac installiert ist.

Ich dachte, dass es in dem /Library/Java/JavaVirtualMachines/Ordner einen Ordner namens 1.7.0.jdkoder so geben würde, aber dann stellte ich fest, dass der Ordner leer ist. Dies wurde durch Ausführen ls /Library/Java/JavaVirtualMachines/im Terminal bestätigt. Ich habe versucht, danach zu suchen, um herauszufinden, ob es woanders installiert wurde, aber das scheint nichts aufzudecken.

Könnte mir bitte jemand sagen, wo Java auf meinem Mac installiert ist?


12
Um Wähler / Wiedereröffner zu schließen - diese Frage ist ausdrücklich nicht vom Thema abweichend (Fragen zu Tools, die häufig von Programmierern verwendet werden) . Leider wurde es von Meta Bandwagoned .
Rob

Antworten:


1384

Verwenden Sie den /usr/libexec/java_home -v 1.8Befehl auf einer Terminal-Shell, um herauszufinden, wo sich Ihr Java 1.8 -Ausgangsverzeichnis befindet

Wenn Sie nur das Home-Verzeichnis Ihrer neuesten Java-Version herausfinden möchten, lassen Sie die Version weg. z.B/usr/libexec/java_home


Ich kam zu dieser Frage, weil ich auf meinem Mac einen Fehler in Eclipse bekam, weil ich in der ersten Zeile des Programms "import java.util. *" Einen Fehler bekam. Ich vermute sehr, dass dies daran liegt, dass der Java-Pfad nicht richtig eingestellt ist oder so (obwohl ich dies schon einmal eingerichtet habe). Ich habe den Befehl in dieser Antwort eingegeben und erhalte ein Verzeichnis. Kann ich dieses Verzeichnis einfach in das Textfeld im Fenster "Native Library Folder Config" einfügen? Oder gehört dieses Verzeichnis woanders hin?
OKGimmeMoney

47
Zu export JAVA_HOME=`/usr/libexec/java_home`.bash_profile hinzugefügt , damit JAVA_HOME immer gesetzt ist (beachten Sie die Back-Ticks um den Befehl libexec)
Steve Henty

Wenn Sie nur wissen möchten, ob das JDK auf Ihrem Mac installiert ist, lassen Sie die Versionsnummer weg und führen Sie es vom Terminal aus: $ echo $ (/ usr / libexec / java_home)
Donato

3
Auf Mac 10.12.3 sollten wir /usr/libexec/java_home -- vdie neueste Version von Java
Klion26

116

Sie können den echo $(/usr/libexec/java_home)Befehl in Ihrem Terminal verwenden, um den Pfad zu ermitteln, unter dem Java installiert wird.


7
Diese Lösung gefällt mir besser als die akzeptierte Antwort, da sie unabhängig von der installierten Version der JVM ist.
Alexandre Santos

1
Dadurch wurde meine von Oracle installierte Java 8-Version nicht gefunden.
Antoine Lizée

13
Warum hast du das echo $(...)da? Tut nicht /usr/libexec/java_homedas Gleiche?
Paŭlo Ebermann

1
Die akzeptierte Antwort hat bei mir nicht funktioniert, aber das hat funktioniert! (Ich bin normalerweise kein Mac / Unix-Benutzer)
Roel

@ PaŭloEbermann Ohne Molzeichen und Klammern funktioniert es bei mir nicht.
Nikola Stojaković

80

Es stellt sich heraus, dass ich tatsächlich Java 7 JRE installiert hatte, nicht das JDK. Der richtige Download-Link ist hier . Nach der Installation wird es jdk1.7.0jdkim JavaVirtualMachines-Verzeichnis angezeigt.


49
Für mich war es unter /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk(wohl wissend , dass für die JDK 1.6 der Pfad: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/)
Zakaria

Vielen Dank! Ich habe nicht bemerkt, dass ich JRE versehentlich installiert habe, auch nicht xD
Oliver Ni

1
Export JAVA_HOME = $ (/ usr / libexec / java_home) bei ~ / .bash_profile
Oleksii Kyslytsyn

34

Wenn Sie nur die JRE installieren, scheint sie wie folgt zu lauten:

/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

2
Sie sollten sich nicht darauf verlassen. Wenn Sie die JRE benötigen, bündeln Sie sie in Ihrer eigenen Anwendung.
Swinger

Das Setzen von JAVA_HOME mit einem Pfad, der ein Leerzeichen enthält, ist eine Herausforderung! Es ist mir nicht gelungen ...
Antoine Rosset

Sie können irgendwo einen Link zu diesem Verzeichnis erstellen und JAVA_HOME auf diesen Link setzen
Kuba

Hier scheint das Fenster "Java" -Systemeinstellungen es zu installieren.
David Avendasora

2
@AntoineRosset, können Sie es so einstellen:export JAVA_HOME=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
Coda

24

Verwenden Sie die Unix-Suchfunktion, um installierte Javas zu finden ...

sudo find / -name java

19
Sie benötigen sudo nicht, um find für allgemein zugängliche Befehle auszuführen. Wenn Sie die Fehlermeldungen zu nicht zugänglichen Verzeichnissen nicht sehen möchten, entfernen Sie die Meldungen, anstatt unnötigerweise Root-Rechte zu verwenden. Sudo die ganze Zeit zu benutzen ist eine schlechte Angewohnheit. Leiten Sie stderr wie folgt nach / dev / null um: find / -name java 2> / dev / null
Walter Underwood

1
Was soll ich tun, wenn ich auch unter unzugänglichen Verzeichnissen suchen muss?
Serkan

2
Walters Punkt ist, dass die javaBinärdatei weltweit lesbar sein wird und daher sudonicht erforderlich ist. Ihre Antwort ist immer noch nützlich :)
Jared Beck

Ja, ich habe dies nur verwendet, um src.zip (den Quellcode des Java JDK) zu finden
Dinis Cruz

Export JAVA_HOME = $ (/ usr / libexec / java_home) bei ~ / .bash_profile
Oleksii Kyslytsyn

22

Versuchen Sie Folgendes: Es ist eine einfache Möglichkeit, den in Java installierten Pfad in Mac OS X zu finden.

Gehe zu

1) / Bibliothek dh Macintosh HD / Bibliothek

Geben Sie hier die Bildbeschreibung ein

2) Klicken Sie auf Bibliothek, um den Java-Ordner zu finden.

Geben Sie hier die Bildbeschreibung ein

3) Der letzte Weg ist also

/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home

Hoffe, das ist Hilfe für jemanden.


1
Ziemlich hilfreich, wenn Sie das JDK explizit von einer IDE aus verweisen müssen. Vielen Dank
Shwetabh Shekhar

Wie dicht bin ich? Mein Terminal sagt, dass ich 2 JDKs in / Library / Java / JavaVirtualMachines / installiert habe, aber ich kann sie nicht finden, wenn ich im Finder zu diesem Verzeichnis navigiere ... Wie dicht kann ich werden ...
SoftwareSavant

@ SoftwareSavant, Bitte beziehen Sie sich auf stackoverflow.com/a/14875241 Antwort, es kann Ihnen helfen.
Jaywant Khedkar

19

Die Java-Paketstruktur von Mac OS unterscheidet sich ein wenig von Windows. Nicht für dieses aufregen als ein Entwickler braucht nur gesetzt PATHund JAVA_HOME.

Also im .bash_profileSet JAVA_HOMEund PATHwie unten. Dieses Beispiel gilt für Java 6:

export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
export PATH=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin:$PATH

12
Dies entfernt über alles andere vom Pfad? Tun Sie dies nur, wenn Sie nur Java und nichts anderes in Ihrem System verwenden.
Paŭlo Ebermann

exportiere JAVA_HOME = $ (/ usr / libexec / java_home) unter ~ / .bash_profile.
Oleksii Kyslytsyn

17

Wenn Sie tippen

java -verbose 

Dies gibt auch den Ort an, von dem aus die Gläser geladen werden, und damit auch den Java-Pfad.


Ich habe export JAVA_HOME = $ (/ usr / libexec / java_home) unter ~ / .bash_profile hinzugefügt.
Oleksii Kyslytsyn

8

Bearbeitet: Alias ​​zur aktuellen Java-Version ist /Library/Java/Home

Für weitere Informationen: einen Link


Dies wäre ein Alias ​​für die neueste Version, die nach der Installation korrekt auf das Java 7 SDK verweist.
Thunderforge

1
Dieser Link ist nur für ältere Zwecke vorhanden und wird durch die Installation von Java 7 nicht aktualisiert. Verwenden Sie diesen Pfad nicht.
Swinger

Ich habe den Export JAVA_HOME = $ (/ usr / libexec / java_home) unter ~ / .bash_profile aktualisiert.
Oleksii Kyslytsyn

8

Schreiben /Library/Java/JavaVirtualMachines/
Sie einfach in Gehe zu Ordner -> Gehe in Finder


ok, ich habe es gerade versucht und es geschafft, zum Verzeichnis zu navigieren. Warum kann ich im Finder nicht normal zu diesem Ordner navigieren? Ist das nur Apple, der besonders nervig ist? Auch Gradle Version 4.3 funktioniert mit keiner Java-Version außer Java 8
SoftwareSavant

exportiere JAVA_HOME = $ (/ usr / libexec / java_home) um ~ / .bash_profile
Oleksii Kyslytsyn

6

Ich habe gerade das JDK für Version 21 von Java SE 7 installiert und festgestellt, dass es in einem anderen Verzeichnis als Apples Java 6 installiert ist. Es befindet sich in / Library / Java ... und nicht in / System / Library / Java ... Wenn Sie / usr / libexec / java_home -v 1.7 gegenüber -v 1.6 ausführen, wird dies bestätigt.


Export JAVA_HOME = $ (/ usr / libexec / java_home) bei ~ / .bash_profile
Oleksii Kyslytsyn

6

Ich habe die Lösung von serkan ausprobiert. Sie hat den Speicherort von Java 7 unter OS X Mavericks gefunden. Es befindet sich in, "/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/" aber um es zum Standard-JDK zu machen, musste ich die Systemvariable JAVA_HOME in .bash_profile im Ausgangsverzeichnis "/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/" so einstellen, dass es jetzt dank serkans Idee funktioniert


exportiere JAVA_HOME = $ (/ usr / libexec / java_home) unter ~ / .bash_profile.
Oleksii Kyslytsyn

5

Zum :

  • OS X: 10.11.6

  • Java: 8

Ich bestätige die Antwort von @Morrie.

   export JAVA_HOME=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home;

Aber wenn Sie Container fahren, wird Ihr Leben einfacher


2
Ich denke, das hätte ein Kommentar sein sollen.
Thunderforge

1
Ich glaube nicht, weil es einen Mehrwert gibt, der "export JAVA_HOME =" ist. ... Was ist mit dir @Thunderforge
Abdennour TOUMI

exportiere JAVA_HOME = $ (/ usr / libexec / java_home) unter ~ / .bash_profile.
Oleksii Kyslytsyn

3

Geben Sie das which javaTerminal ein, um anzuzeigen, wo es installiert ist.


1
Ja, exportieren Sie JAVA_HOME = $ (/ usr / libexec / java_home) unter ~ / .bash_profile.
Oleksii Kyslytsyn

-1

In den Systemeinstellungen, dann in der Java-Systemsteuerung, dann in Java und dann in Ansicht wird der genaue Speicherort der aktuell installierten Standard-JRE angezeigt.


Export JAVA_HOME = $ (/ usr / libexec / java_home) bei ~ / .bash_profile
Oleksii Kyslytsyn
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.