Was tun, wenn Sie Java für OS X unter macOS installiert haben?

Wenn Sie JDK6 unter macOS Sierra oder OS X El Capitan unter Verwendung von Java für OS X installiert haben, war es ziemlich schwierig, es sauber zu entfernen. Notieren Sie sich dies.

Umgebung

$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.12
BuildVersion:	16A323

Problem

Die Frage "Was ist los?" Ist, dass Sie die symbolischen Links, die bei der Installation von Java für OS X erstellt wurden, nicht ändern können (ln -fs, unlink, rm).

Der fragliche symbolische Link ist unten.

$ ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
lrwxr-xr-x  1 root  wheel  59  1 27 01:03 /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ->  /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents

Dies verschwindet nicht leicht. Der Befehl ln scheint zu bestehen und ändert sich nicht, und die Befehle unlink und rm geben die Berechtigung verweigert zurück.

Ursache

Nach der Untersuchung scheint die Ursache darin zu liegen, dass der Schutz durch die implementierte SIP-Funktion (System Integrity Protecton) nach "OS X El Capitan" funktioniert hat.

Es gab Leute, die Probleme mit dem gleichen Austausch hatten, also war es sehr hilfreich. => [unnötige Dateien in der Systembibliothek für Mac-OS-X löschen](http://apple.stackexchange.com/questions/214538/delete-unnecessary-files-in-system-library- for-mac-os-x)

Lösung

Sobald Sie dies wissen, ist es nicht so schwierig, später damit umzugehen. Folgen Sie den unteren Schritten.

  1. Starten Sie Ihren Mac neu und halten Sie vor dem Booten + r gedrückt.
  2. Stellen Sie sicher, dass das macOS-Dienstprogramm gestartet wird.
  3. Öffnen Sie im Menü Dienstprogramme> Terminal.
  4. Geben Sie in einem offenen Terminal "csrutil disable" ein, um es auszuführen. (Dieser Befehl deaktiviert SIP.)
  5. Starten Sie nach Bestätigung der Ausführung normal neu.
  6. Öffnen Sie nach dem Neustart das Terminal erneut und trennen Sie die symbolische Zielverknüpfung oder löschen Sie das verknüpfte Verzeichnis.
  7. Wenn nach dem Löschen ein Pfad des JDK vorhanden ist, zu dem Sie wechseln möchten, fügen Sie erneut einen symbolischen Link zu / System / Library / Frameworks / JavaVM.framework / Versions / CurrentJDK hinzu.

das ist alles. Nach allen Vorgängen wird empfohlen, das Dienstprogramm macOS erneut zu starten und "csrutil enable" auszuführen, um SIP für alle Fälle zu aktivieren.

Wenn Sie JDK6 installieren möchten

Lassen Sie es uns mit Homebrew installieren. Sie können JDK6 mit dem folgenden Befehl installieren.

Selbst mit dieser Methode kann jedoch "/ System / Library / Frameworks / JavaVM.framework / Versions / CurrentJDK" überschrieben werden. Daher ist es möglicherweise besser, sich darauf vorzubereiten, den Pfad der symbolischen Verknüpfung zu überprüfen und zu ersetzen. nicht.

$ brew cask install java6

$ ls /Library/Java/JavaVirtualMachines/
1.6.0.jdk/        jdk1.7.0_79.jdk/  jdk1.8.0_121.jdk/ jdk1.8.0_91.jdk/

$ ls -al /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
8 lrwxr-xr-x  1 root  wheel  59  2  4 20:11 /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK -> /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents 

$ sudo unlink \
> /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK

$ sudo ln -s \
> /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents \
> /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK

Recommended Posts

Was tun, wenn Sie Java für OS X unter macOS installiert haben?
Was tun, wenn beim Versuch, Eclipse unter Java 9 auszuführen, ein NoClassDefFoundError angezeigt wird?
Was tun, wenn auf GitHub eine MiniMagick-Sicherheitsanfälligkeitswarnung angezeigt wird?
Was tun, wenn TextToSpeech unter Android 11 nicht funktioniert?
Was tun, wenn Sie versehentlich ein Modell erstellen?
Was tun, wenn Sie den Befehl "Java-Paketname / Klassenname" nicht ausführen können?
Was tun, wenn Sie das JDK, das Sie nach der Migration von bash nach zsh unter macOS in SDKMAN eingefügt haben, nicht finden können?
Was tun, wenn in GlassFish eine java.io.IOException auftritt?
Was tun, wenn der Befehl Rails unbrauchbar wird?
[Java] [Spring] Was tun, wenn Sie nach dem Kommentieren von Spring Security nicht automatisch mit Type Mismatch verdrahten können?
Was tun, wenn Sie Ruby mit rbenv installiert haben, die Version sich jedoch nicht ändert?
Was tun, wenn in Docker ein gcc-Fehler auftritt?
Was tun, wenn Sie sich über OpenSSL mit pyenv install ärgern?
Was tun, wenn Sie Ihr Root-Passwort unter CentOS7 vergessen haben?
[Rails] Was tun, wenn Sie mit form_with keine Parameter abrufen können?
Was tun, wenn Sie aufgrund eines SSL-Zertifikatfehlers offline gehen, wenn Sie Jenkins auf Ihrem Mac ausführen?
[Spring Boot] Was tun, wenn eine HttpMediaTypeNotAcceptableException auf einem Endpunkt auftritt, für den produziert wird?
Was tun, wenn der Git-Status besagt, dass Änderungen nicht für das Festschreiben bereitgestellt wurden: Nach dem Hinzufügen des Git.
So überprüfen Sie, ob Java auf einem Mac installiert ist
Wenn Sie Java nicht auf Catalina installieren können
Was tun, wenn Sie in Thymeleaf Layout eine groovige Warnung erhalten?
Was tun, wenn Sie das Plug-In nicht vom Eclipse Marketplace installieren können?
Was tun, wenn die Bereitstellung in Heroku fehlschlägt (Ruby-App nicht erkannt)?
Kein Platz mehr auf dem Gerät Was tun, wenn ein Fehler auftritt?
Was tun, wenn Ihnen der von swagger-codegen-cli generierte Code nicht gefällt?
Was tun, wenn in CircleCI der Fehler zu lang ohne Ausgabe (über 10 m0s) angezeigt wird?
Was tun, wenn Sie aktiviert haben? Verwenden Sie die WSL2-basierte Engine in Docker Desktop mit unzureichender WSL2-Installation
So übersetzen Sie die Fehlermeldung ins Japanische (Was tun, wenn Sie sich aus irgendeinem Grund nicht anmelden können)
Was tun, wenn Sie glauben, dass Sie mit IntelliJ IDEA CE nicht Groovy-> Java können?
Was tun, wenn Sie Gemfile oder .bundle / directory nicht finden konnten?
Was tun, wenn Sie das mit bootstrap-select erstellte Auswahlfeld nicht aktivieren können?
wildflly10 java8 ERROR [org.jboss.jca.core.tx.jbossts.XAResourceRecoveryImpl] (Periodische Wiederherstellung) IJ000906 Was tun, wenn ein Fehler auftritt?
Was tun, wenn Um die fehlende Version zu installieren, führen Sie `gem install bundler: 2.1.4` aus
Was tun, wenn der Server-Tomcat stirbt?
[Java] (für MacOS) Methode zur Einstellung des Klassenpfads
Was tun, wenn mvn archetype: generate fehlschlägt?
Was verwenden Sie beim Konvertieren in String?
Was tun, wenn Sie unter Windows 7 die Java-Version wechseln und den Fehler "Registrierungsschlüssel" Software \ JavaSoft \ Java-Laufzeitumgebung "\ CurrentVersion" erhalten, der Wert "1,8" hat, "1,7" jedoch erforderlich ist.
Was tun, wenn in bind.pry eine falsche Anzahl von Argumenten angezeigt wird?
Was tun, wenn Sie den Text eines Elements in Selen nicht abrufen können?
Sie müssen nicht zweimal schreiben, wenn Sie in Java ein rechtwinkliges Dreieck erstellen
Was tun, wenn Sie Ihren API-Schlüssel nach der Bereitstellung auf Rails heroku nicht finden können?