So wechseln Sie Java JDK auf macOS: 5 Anfängerfehler und deren Lösung

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

So wechseln Sie die Java-Version (JDK) auf macOS ohne Kopfschmerzen: Ein Leitfaden für alle, die Fehler leid sind

\n\n

Haben Sie jemals versucht, ein altes Java-Projekt zu starten, das hartnäckig mit einem Fehler abgestürzt ist? Oder benötigt Ihre neue IDE JDK 17, während Sie JDK 8 installiert haben? Wenn Sie auf macOS arbeiten, sind Sie bestimmt schon darauf gestoßen, dass das Wechseln der Java-Version eine echte Herausforderung ist. Es scheint, als ob der Befehl java -version ein Eigenleben führt und sich Ihren Wünschen nicht unterordnet.

\n\n

Auf Stack Overflow hat die Frage „How to set or change the default Java (JDK) version on macOS?“ Tausende von Aufrufen und Hunderte von Kommentaren gesammelt. Menschen verwechseln Pfade, vergessen JAVA_HOME und zerstören versehentlich das System. Lassen Sie uns ein für alle Mal klären: Wie man JDK auf dem Mac verwaltet, welche Fehler Anfänger erwarten und wie man sie umgeht.

\n\n

Dieser Artikel ist keine trockene Dokumentation. Wir gehen den Weg vom völligen Chaos zum klaren Verständnis. Los geht's!

\n\n

Warum arbeitet macOS so „seltsam“ mit Java?

\n\n

Das Erste, was Sie verstehen müssen: macOS ist ein Unix-System und mag es nicht, wenn Sie manuell Dateien in Ordner stopfen, wo sie nicht hingehören. Apple installiert JDK standardmäßig in /Library/Java/JavaVirtualMachines/, und Systemdienstprogramme wie /usr/bin/java sind nur Wrapper, die auf Ihre JAVA_HOME-Variable schauen.

\n\n

Der häufigste Fehler ist der Versuch, einen JDK-Ordner umzubenennen oder zu löschen. Tun Sie das nicht! Stattdessen müssen Sie lernen, symbolische Links und Umgebungsvariablen zu verwalten.

\n\n

Schritt 1: Herausfinden, welche JDKs bereits installiert sind

\n\n

Bevor Sie etwas ändern, schauen wir uns an, was Sie haben. Öffnen Sie das Terminal und führen Sie aus:

\n\n
/usr/libexec/java_home -V
\n\n

Sie sehen dann etwas wie:

\n\n
Matching Java Virtual Machines (3):\n    17.0.6 (x86_64) "Oracle Corporation" - "Java SE 17.0.6" /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home\n    11.0.18 (x86_64) "Oracle Corporation" - "Java SE 11.0.18" /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home\n    1.8.0_361 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_361.jdk/Contents/Home
\n\n

Dies ist die vollständige Liste der JDKs, die das System kennt. Wenn Sie ein JDK über Homebrew oder manuell installiert haben, es aber nicht angezeigt wird, liegt es entweder im falschen Ordner oder hat nicht die richtige Struktur.

\n\n

Fehler Nr. 1: Denken, dass export JAVA_HOME für immer gilt

\n\n

Anfänger schreiben oft im Terminal:

\n\n
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home\njava -version  # zeigt 17
\n\n

Und freuen sich. Aber sobald Sie das Terminal schließen und ein neues öffnen, ist alles wieder bei der alten Version. Warum? Weil export nur in der aktuellen Sitzung funktioniert.

\n\n

Lösung: Fügen Sie diese Zeile Ihrer Shell-Konfigurationsdatei hinzu. Wenn Sie zsh verwenden (Standard-Shell auf macOS seit Catalina und neuer), bearbeiten Sie die Datei ~/.zshrc:

\n\n
echo 'export JAVA_HOME=$(/usr/libexec/java_home -v 17)' >> ~/.zshrc\nsource ~/.zshrc
\n\n

Wenn Sie bash verwenden (ältere macOS-Versionen), heißt die Datei ~/.bash_profile.

\n\n

Fehler Nr. 2: Verwechslung zwischen java und javac

\n\n

Sie haben JAVA_HOME geändert, der Befehl java -version zeigt die gewünschte Version, aber javac -version zeigt hartnäckig die alte Version. Kommt Ihnen das bekannt vor?

\n\n

Dies passiert, weil java und javac unterschiedliche ausführbare Dateien sind. Manchmal können sie aus verschiedenen JDKs stammen. Überprüfen Sie, wo sie sich befinden:

\n\n
which java   # /usr/bin/java\nwhich javac  # /usr/bin/javac
\n\n

Wenn die Pfade gleich sind, liegt das Problem darin, dass /usr/bin/java ein symbolischer Link ist, der auf eine alte Version verweisen kann. Aktualisieren Sie ihn mit dem Dienstprogramm java_home:

\n\

Blogs

Buchempfehlungen