Quand on utilise VSCode pour faire du Java, on va généralement installer l'extension Language Support for Java(TM) by Red Hat qui se base sur une solution Eclipse sous le capot. Dans l'idée c'est très bien et ça permet de faire une installation rapide. Les soucis commencent quand on commence à installer notre SDK Java via SDKMan pour pouvoir jongler entre plusieurs versions java rapidement et sans dépendre de sa distribution (c'est mon cas, bien qu'utilisateur d'ArchLinux, je joue parfois avec des versions non présentes sur les dépôts).
Si vous êtes dans la même situation que moi, vous allez tomber sur des erreurs du type :
The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files Java(16777540)
ou des erreurs sur les imports des API java.* (type java.util.List ou java.util.Map).
Comme dit plus haut, sous le capôt l'extension utilise Eclipse, qui est écrit en Java, il utilise donc une version Java embarquée, sauf que celle-ci n'a aucune raison d'être identique à la version Java que vous utilisez si vous jouez avec SDKMan. Il faut donc lui indiquer l'emplacement du Java que vous allez utiliser dans votre settings.json
(chez moi /home/anthony/.config/VSCodium/User/settings.json
:
{
"java.home": "/home/anthony/.sdkman/candidates/java/current"
}
Après avoir sauvegardé, vous devriez avoir un popup en bas à droite qui vous demande de redémarrer votre VSCode et tout devrait fonctionner sans souci ensuite 😎