Changer Java JDK sur macOS : 5 erreurs débutants et solutions

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Comment changer de version Java (JDK) sur macOS sans prise de tête : le guide pour ceux qui en ont marre des erreurs

\n\n

Avez-vous déjà essayé de lancer un ancien projet Java qui plantait systématiquement ? Ou au contraire, votre nouvel IDE exige JDK 17 alors que vous avez JDK 8 ? Si vous travaillez sur macOS, vous avez sûrement constaté que basculer entre les versions Java est un véritable parcours du combattant. On dirait que la commande java -version vit sa propre vie et n'en fait qu'à sa tête.

\n\n

Sur Stack Overflow, la question « How to set or change the default Java (JDK) version on macOS? » cumule des milliers de vues et des centaines de commentaires. Les utilisateurs se perdent dans les chemins, oublient JAVA_HOME et cassent accidentellement leur système. Mettons les choses au clair une fois pour toutes : comment gérer JDK sur Mac, quelles sont les erreurs des débutants et comment les éviter.

\n\n

Cet article n'est pas une documentation aride. Nous allons passer du chaos total à une compréhension limpide. C'est parti !

\n\n

Pourquoi macOS gère-t-il Java de manière si « étrange » ?

\n\n

Première chose à comprendre : macOS est un système Unix, et il n'aime pas qu'on déplace manuellement des fichiers dans des dossiers où ils n'ont rien à faire. Apple installe par défaut JDK dans /Library/Java/JavaVirtualMachines/, et les utilitaires système comme /usr/bin/java ne sont que des enveloppes qui pointent vers votre JAVA_HOME.

\n\n

L'erreur la plus fréquente ? Essayer de renommer ou de supprimer le dossier JDK. Ne faites surtout pas ça ! Il faut plutôt apprendre à gérer les liens symboliques et les variables d'environnement.

\n\n

Étape 1 : Vérifier les JDK déjà installés

\n\n

Avant de modifier quoi que ce soit, regardons ce que vous avez. Ouvrez le Terminal et exécutez :

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

Vous verrez quelque chose comme :

\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

Voici la liste complète des JDK reconnus par le système. Si vous avez installé JDK via Homebrew ou manuellement mais qu'il n'apparaît pas, c'est qu'il se trouve dans le mauvais dossier ou n'a pas la structure adéquate.

\n\n

Erreur n°1 : Croire que export JAVA_HOME est permanent

\n\n

Les débutants tapent souvent dans le terminal :

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

Et ils sont contents. Mais dès qu'ils ferment le terminal et en ouvrent un nouveau, tout revient à l'ancienne version. Pourquoi ? Parce que export ne fonctionne que dans la session en cours.

\n\n

Solution : Ajoutez cette ligne dans votre fichier de configuration du shell. Si vous utilisez zsh (shell par défaut sur macOS depuis Catalina), modifiez le fichier ~/.zshrc :

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

Si vous utilisez bash (anciennes versions de macOS), le fichier s'appelle ~/.bash_profile.

\n\n

Erreur n°2 : Confusion entre java et javac

\n\n

Vous avez changé JAVA_HOME, la commande java -version affiche la bonne version, mais javac -version montre obstinément l'ancienne. Ça vous dit quelque chose ?

\n\n

Cela arrive parce que java et javac sont des exécutables différents. Parfois, ils peuvent provenir de JDK différents. Vérifiez où ils se trouvent :

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

Si les chemins sont identiques, le problème vient du fait que /usr/bin/java est un lien symbolique qui peut pointer vers une ancienne version. Mettez-le à jour avec l'utilitaire java_home :

\n

Blogs

Book Recommendations