Java vom Mac entfernen, ohne die Toolchain zu zerstören
In „Java auf dem Mac deinstallieren“ stecken zwei Fragen, und die falsche zu beantworten führt zu einer kaputten Toolchain. Die erste ist, welches Java Sie haben. Die zweite ist, was sonst auf dem Rechner darauf angewiesen ist.
Oracles eigene Anleitung ist kurz, und die wichtigste Zeile darin ist kein Schritt. Es ist eine Warnung vor einem Verzeichnis, das Sie unangetastet lassen sollten.
Java nicht aus /usr/bin entfernen
Oracle sagt es direkt: versuchen Sie nicht, Java zu deinstallieren, indem Sie die Java-Werkzeuge
aus /usr/bin entfernen. Dieses Verzeichnis gehört zur Systemsoftware, und jede Änderung wird
von Apple beim nächsten macOS-Update zurückgesetzt.
Das ist die häufigste Fehlerquelle. which java liefert einen
Pfad unter /usr/bin, der wie die Antwort aussieht, es aber nicht ist. Unter macOS sind das
Stubs, die auf die tatsächlich installierte Runtime zeigen. Sie zu löschen entfernt die
Wegweiser, nicht das Gebäude, und macOS stellt sie später ohnehin wieder her.
Wissen, welches Java Sie entfernen
Eine Runtime und ein Development Kit sind unterschiedliche Installationen und werden auf unterschiedliche Weise entfernt.
Die Oracle JRE, die Consumer-Runtime mit dem Browser-Plug-in und dem Einstellungsbereich, liegt an drei Orten, die Oracle nennt:
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin
/Library/PreferencePanes/JavaControlPanel.prefPane
~/Library/Application Support/Oracle/Java
Ein JDK ist davon getrennt, installiert sich unter /Library/Java/JavaVirtualMachines/ und zum Entfernen
braucht es Administratorrechte. Sie können mehrere nebeneinander haben, was normal
und oft beabsichtigt ist.
Listen Sie vor der Entscheidung auf, was tatsächlich installiert ist:
/usr/libexec/java_home -V
Das gibt jedes JDK aus, das das System kennt, mit Version und Pfad. Wenn diese Liste einen Eintrag hat, ist die Wahl einfach. Wenn sie vier hat, ist der nächste Abschnitt entscheidend.
Das falsche JDK zu entfernen legt andere Software lahm
Java ist selten um seiner selbst willen installiert. Android-Tooling, Elasticsearch, Minecraft- Launcher, JetBrains-IDEs, Apache-Tooling und mehrere Enterprise-VPN- und Druck- Clients liefern eine JVM mit oder hängen von einer ab. Manche bündeln eine eigene Kopie und bleiben unberührt. Andere lösen auf, was das System anbietet, und funktionieren nicht mehr, wenn sich das ändert.
Wenn ein JDK über einen Paketmanager installiert wurde, entfernen Sie es auf demselben Weg, auf dem es installiert wurde. Ein
über Homebrew installiertes temurin entfernen Sie mit brew uninstall, und die Dateien von
Hand zu löschen lässt die Paketdatenbank behaupten, es sei noch da.
Ein JDK auf dem vorgesehenen Weg entfernen
Für ein JDK, das Sie aus einem .pkg installiert haben, entfernen Sie das Verzeichnis unter
/Library/Java/JavaVirtualMachines/, das die Version im Namen trägt; dafür brauchen Sie
sudo. Entfernen Sie jeweils eine Version und prüfen Sie die für Sie wichtigen Werkzeuge, bevor
Sie die nächste entfernen.
Danach sollte /usr/libexec/java_home -V es nicht mehr listen, und jede
JAVA_HOME, die Sie von Hand in einem Shell-Profil gesetzt haben, zeigt jetzt ins Leere. Diese Variable ist
die zweithäufigste Ursache für eine Toolchain, die nach einer sauberen Entfernung fehlschlägt.
Prüfen, bevor Sie das Terminal schließen
/usr/libexec/java_home -V
java -version
Das erste zeigt, was übrig ist. Das zweite meldet entweder eine Version oder sagt, dass keine Runtime installiert ist, was auf einem Rechner, von dem Sie Java entfernen wollten, die richtige Antwort ist und kein Fehler.
Wo eine Übersicht der Spuren hilft
Javas Überreste sind klein, verstreut und unspektakulär: Caches, Einstellungen, ein Plug-in, ein Einstellungsbereich. Der interessante Teil ist die Bestandsaufnahme, und das Terminal liefert Ihnen die bereits. Wenn Sie lieber den gesamten Umfang eines JDK oder der Apps, die eines bündeln, in einer Liste mit Größen sehen möchten, leistet Mole das, ohne dass Sie die Pfade im Voraus kennen müssen.
Drei Stellen, die Sie danach prüfen sollten
Als Erstes Ihr Shell-Profil. Ein manuell gesetztes JAVA_HOME in ~/.zshrc oder ~/.zprofile verschwindet nicht mit dem JDK. Es zeigt weiterhin auf einen Pfad, der nicht mehr existiert, und jede neue Shell erbt die defekte Variable. Entfernen Sie die Zeile oder ändern Sie sie zu export JAVA_HOME=$(/usr/libexec/java_home), damit sie dem folgt, was das System bereitstellt.
Als Zweites Ihre IDEs. JetBrains-Tools und Android Studio speichern pro Projekt einen festen JDK-Pfad und folgen keiner Systemänderung. Das zeigt sich so, dass ein Projekt nicht baut, während die Kommandozeile in Ordnung ist.
Als Drittes alles, was ein Paketmanager installiert hat. brew list | grep -i -E 'jdk|temurin|zulu|openjdk' zeigt, was von Homebrew stammt. Das deinstallieren Sie mit brew uninstall; manuelles Löschen der Verzeichnisse lässt die Paketdatenbank glauben, sie seien noch installiert.