Ich habe JDK 7u7 installiert, das von der Oracle-Website heruntergeladen wurde. Nach der Installation zeigt das Terminal jedoch immer noch Java-Version 6 an
$Java -version
Java version "1.6.0_35"
Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811)
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode)
eine Idee, warum Java 7 nicht angezeigt wird?
Ans: OK, das Problem wurde behoben. Hier ist die Antwort: Ich habe festgestellt, dass mein Terminal ein .bash_profile hat und die Java-Home-Variable auf 1.6 gesetzt ist
export Java_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home"
Dies ist also die Zeile, die das Problem verursacht, wenn ich ein neues Terminalfenster öffne. Diese Zeile einfach entfernen, löst das Problem. Sie müssen weiterhin den Anweisungen von @aleroot folgen. Wenn dies jedoch nicht funktioniert, überprüfen Sie die Einstellungsdatei .bash_profile (oder .bashrc), um festzustellen, ob Sie zuvor eine Java-Version exportiert haben.
Da Sie im Bereich Java-Einstellungen nur die JVM 7 folgendermaßen kennzeichnen müssen:
Um den Bereich Java-Einstellungen in Mac OS X einfach und schnell zu öffnen, können Sie spotlight einfach mit aufrufen ⌘+SPACE und geben Sie Systemeinstellungen ein, die in der letzten Zeile des Fensters angezeigt werden.
Das Installationsprogramm von Oracle fügt Java in /Library/Internet Plug-Ins/JavaAppletPlugin.plugin
ein. Und /usr/bin/Java
wird nicht überschrieben. Also, wenn Sie eine ausgeben
whereis Java
im Terminal wird/usr/bin/Java zurückgegeben. (was wiederum auf /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/Java
verweist, die Version 1.6 von Apple).
Wenn Sie also die neue Java-Version verwenden möchten, ersetzen Sie den /usr/bin/Java
-Symlink, sodass er stattdessen auf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/Java
zeigt:
Sudo rm /usr/bin/Java
Sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/Java /usr/bin
Installieren Sie das JDK 7 und dieses Problem wird sich von selbst lösen.
Stellen Sie sicher, dass Sie das Java Development Kit (JDK) erhalten, das Compiler und ähnliches enthält und nicht nur Java Runtime Environment (JRE).
vi ~/.bash_profile
hinzufügen
export Java_HOME=`/usr/libexec/Java_home -v 1.7`
Dadurch wird Ihrem /usr/bin/Java
-Link-Ziel das neueste Java 7-Paket zugewiesen, das in installiert ist
/Library/Java/JavaVirtualMachines/
Für JDK wäre 1.7.0_17
Java_HOME
:
/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home
Hinweis: In letzter Zeit wurde in diesem Bereich viel geändert, um Mac OS X von Appels eigenen System-integrierten Java-Paketen auf Oracle-basierte Java-Pakete umzustellen. Die obige Lösung funktioniert einwandfrei ab Mac OS X 10.8.2
In meinem Fall bestand das Problem darin, dass Oracle es an einem anderen Ort als ich installiert hatte.
Von Oracle herunterladen: http://Java.com/de/download/mac_download.jsp?locale=de
Überprüfen Sie die ordnungsgemäße Installation, indem Sie in den Systemeinstellungen nachschlagen:
Stellen Sie sicher, dass die Version Ihren Vorstellungen entspricht (je nach Bedarf in Ihrem Pfad):
/ Library/Internet\Plug-Ins/JavaAppletPlugin.plugin/Inhalt/Home/bin/Java -Version
Erstellen Sie einen Link von/usr/bin/Java zu Ihrer neuen Installation
Sudan ln -fs/Library/Internet\Plug-Ins/JavaAppletPlugin.plugin/Inhalt/Home/bin/Java/usr/bin/Java
Überprüfe deine Version:
Java-Version
Ich hatte ein ähnliches Problem mit Terminal, bei dem die Java-Version nicht mit der auf dem Mac installierten Version aktualisiert wurde.
Bei der Einstellung der Umgebungsvariable Java_HOME ist kein Problem aufgetreten
Ich habe eine temporäre und etwas schmerzhafte, aber funktionierende Lösung gefunden.
Fügen Sie in Ihrem .bash_profile die Zeile hinzu:
export Java_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home"
(Dies ist der Pfad auf meinem Computer, der auf Ihrem Computer jedoch unterschiedlich sein kann. Achten Sie darauf, dass Sie Ihren Pfad erhalten. Die Pfade sollten mit/Library/Java/JavaVirtualMachines/übereinstimmen.
der Lauf source ~/.bash_profile
Wie ich bereits erwähnt habe, handelt es sich um eine temporäre Lösung für die Bandhilfe, da der Java-Home-Pfad hart codiert ist. Es gibt wirklich keine Möglichkeit, den Pfad für die neuesten Informationen festzulegen, da Apple dies angeblich bereits für das Terminal tut und das Problem ist, dass die Java_home-Umgebungsvariable von Apple nicht aktualisiert wird.
Seit El Capitan ist es schwierig, den /usr/bin/Java
-Symlink zu löschen, da die neue "rootless" -Politik eingeführt wurde.
Deshalb habe ich einfach den Pfad zur neuesten Java-Version (in meinem Fall /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin
) zur PATH
in meiner .bashrc
-Datei hinzugefügt:
# Use latest Java version
export PATH=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH
Um Ihre .bashrc
-Datei für die aktuelle Sitzung neu zu laden, führen Sie source ~/.bashrc
in der Shell aus. Sie müssen dies nur für Sitzungen tun, die gestartet wurden, bevor Sie die .bashrc
-Datei ändern.
Jetzt wird die neueste Version verwendet, wenn Sie Java
in der Shell verwenden.
Für mich ist es am einfachsten und saubersten, Java mit dem hier beschriebenen Homebrew zu installieren:
https://stackoverflow.com/a/28635465
brew update
brew cask install Java
Das grundlegende Problem: /usr/bin/Java
verweist auf ein von OSX selbst bereitgestelltes (/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/Java
) Wir müssen auf den vom JDK-Installationsprogramm heruntergeladenen verweisen. Die folgenden Schritte beziehen sich auf OSX 10.10.4 Yosemite.
Path
und kopieren Sie den Pfad (cmd + c). Dies ist die neueste Version, die vom JDK-Installationsprogramm/Updater installiert wurde. In meinem Fall war der Pfad /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/Java
ln -s
-Befehl), den wir im vorherigen Schritt gefunden haben. Führen Sie den folgenden Befehl aus:Sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/Java /usr/bin/Java
Das ist es. Zur Überprüfung können Sie einfach Java -version
Auf dem Terminal ausführen. Es sollte die neueste Version ausgegeben werden, auf der Sie installiert/aktualisiert wurden.
Sie können folgenden Befehl in Ihrem Terminal ausführen:
export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
Und dies ersetzt das alte Java durch neues.
Ich tat
export Java_HOME=`/usr/libexec/Java_home`
und das Problem mit Java 8 wurde behoben.
vor:
Java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)
nach dem:
Java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
Darf ich Ihnen vorschlagen, sich das Tool Jenv anzusehen?
Auf diese Weise können Sie jederzeit zwischen den installierten JVMs wechseln.
Einfach als:
jenv global Oracle-1.7
dann später zu Testzwecken:
jenv global Oracle-1.6
Und Sie haben viel mehr Befehle zur Verfügung.
http://www.Java.com/de/download/faq/Java_mac.xml ist ein schöner Ort, um zu verstehen, während Apple die Unterstützung für Java beendet, warum Java-Einstellungen nicht mehr existieren und auf System_Preferences angewiesen sind => Java => Java, wenn Java 7 von Oracle installiert ist.
Das ist verrückt! Wie stellt Oracle ein Installationsprogramm bereit, das nichts installiert !?
Für mich war es sowieso:
Sudo rm /usr/bin/Java
Sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre/bin/Java /usr/bin/Java
wobei 1.8.0_31 Ihre installierte Java-Version ist ...
Das Festcodieren des Java_HOME-Pfads ist möglicherweise nicht die beste Idee. Das Dienstprogramm /usr/libexec/Java_home
funktioniert für mich unter Mac OSX Lion 10.7.5 und JDK 1.7.0_13. Laut seiner Manpage soll sie mit Apples alten Java-Voreinstellungsfenstern verwendet werden, scheint jedoch mit dem von Oracle (Java Control Panel) bereitgestellten Ersatz zu arbeiten. Beim Ausführen von /usr/libexec/Java_home -V
werden beispielsweise alle installierten JDKs (sowohl 1.6. * Als auch 1.7. *) Auf meinem Computer aufgelistet.
Wie in anderen Threads besprochen (z. B. Was muss ich unter OSX auf Java setzen?), Würde ich trotzdem empfehlen, die folgende Zeile zu Ihrem .bash_profile hinzuzufügen:
export Java_HOME=$(/usr/libexec/Java_home)
export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
Ich denke, Sie können versuchen, jdk nicht jre zu installieren. Durch die Installation von jdk wird Java in/usr/bin/Java ersetzt und alle Bibliotheken funktionieren einwandfrei.
Falls Sie mehrere Java-Versionen auf Ihrem Computer haben und diese zur Laufzeit dynamisch auswählen möchten, d. H.
ls -la /Library/Java/JavaVirtualMachines
drwxr-xr-x 3 root wheel 96B Nov 16 2014 jdk1.7.0_71.jdk/
drwxr-xr-x 3 root wheel 96B Mar 1 2015 jdk1.8.0_31.jdk/
Sie können sie ändern, indem Sie den Inhalt von/etc/profile ändern. Fügen Sie einfach die folgenden zwei Zeilen am Ende der Datei hinzu (oder ändern Sie sie):
export Java_HOME=YOUR_Java_PATH/Contents/Home
export PATH=$Java_HOME/bin:$PATH
In meinem Fall sollte es folgendermaßen aussehen, wenn ich verwenden möchte:
Java 7:
export Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
export PATH=$Java_HOME/bin:$PATH
Java 8:
export Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home
export PATH=$Java_HOME/bin:$PATH
Nach dem Speichern der Datei bitte ausführensource /etc/profile
sollte es funktionieren. Hier sind Ergebnisse, wenn ich die erste und zweite Option entsprechend verwende:
Java 7:
Java -version
Java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java 8:
Java -version
Java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Der Vorgang ist ähnlich, wenn sich Ihr Java-Ordner an verschiedenen Speicherorten befindet.
Dies geschieht, weil Ihr .bash_profile Änderungen nicht widerspiegelt. Um dies zu reflektieren, verwenden Sie einfach den folgenden Befehl
$ source .bash_profile
Sie können diesen Befehl ausführen, um die Java-Version unter/Library/Internet Plugins/zu finden:
defaults read /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Info.plist CFBundleVersion
ich habe dieses Problem behoben, indem ich Yosemite erneut installierte und dann die Java-Version auf dem Terminal (Java-Version) und (Javac-Version). überprüfte ) Bibliothek> Java> javavirtualmachine> Ihre javac-aktuelle Version. Sie müssen sich an Java home wenden.
Überprüfen Sie die installierten JDK-Versionen:
$ ls /Library/Java/JavaVirtualMachines/
jdk-11.0.2.jdk jdk1.8.0_91.jdk
In Ihrem ~/.bashrc
export Java_HOME
geben Sie nun die Version an:
if [ -e /usr/libexec/Java_home ]; then
export Java_HOME=$(/usr/libexec/Java_home -v 11)
fi
Quelle Die bashrc-Datei und die Java-Version werden aktualisiert:
$ Java -version
Java version "11.0.2" 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)
Wenn Sie Homebrew installiert haben, können Sie Java-switcher installieren, um die Java-Standardversion schneller zu ändern
brew tap andycillin/tap
brew install Java-switcher
Dann können Sie mit nur einem Befehl Ihre Standard-Java-Version wechseln.
Java-switcher 1.7
oder
Java-switcher 10
Bei der Installation über verteiltes JDK DMG von der Oracle-Site wird alles für mich automatisch aktualisiert. Ich habe (in El Capitan) gesehen, dass Updates durch System Preferences > Java
Aktualisierungen vorgenommen haben, die sich jedoch nicht auf die Befehlszeile beziehen. Die Installation über DMG erledigt die Aufgabe.
Da ich dieses Problem noch nicht gesehen habe, nehme ich eine Ahnung -
Können Sie das bitte versuchen:
Wo zeigt der Softlink "Java_home":
ls -lrt /usr/libexec/Java_home
Ausgabe: (stunted) lrwxr-xr-x Java_home -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/Java_home
** ls -lrt /System/Library/Frameworks/JavaVM.framework/Versions Mein MAC produziert Folgendes:
lrwxr-xr-x CurrentJDK ->
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents**
lrwxr-xr-x Current -> A
lrwxr-xr-x 1 root wheel 10 Oct 18 14:39 1.6.0 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Oct 18 14:39 1.6 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Oct 18 14:39 1.5.0 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Oct 18 14:39 1.5 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Oct 18 14:39 1.4.2 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Oct 18 14:39 1.4 -> CurrentJDK
Darauf basierend könnten wir einen Hinweis erhalten, um fortzufahren.
Ich habe dieses Problem mit Sudo rm /usr/bin/Java
behoben.
Ich habe die letzte Java SE-Laufzeitumgebung heruntergeladen und installiert: http://www.Oracle.com/technetwork/Java/javase/downloads/index.html
Sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre/bin/Java /usr/bin/Java
funktionierte nicht für mich, da ich Operation not permitted
bekam. El Capitan schützt jetzt bestimmte Systemverzeichnisse im "rootless" -Modus (a.k.a. System Integrity Protection). Es ist auf macOS Sierra anwendbar und wahrscheinlich auf absehbare Zeit neue macOS-Versionen.