Maison >Java >javaDidacticiel >Pourquoi Eclipse ne parvient-il pas à trouver mes classes XML après le passage au JDK 10 ?
Eclipse rencontre des problèmes de localisation des classes XML après le changement de chemin de construction du JDK 10
Alors qu'il travaillait sur un projet Maven dans Eclipse, un utilisateur a rencontré des difficultés après modifiant le chemin de construction Java du projet vers JDK 10. Plus précisément, Eclipse est devenu incapable de localiser Classes liées à XML, telles que javax.xml.xpath.XPath, org.w3c.dom.Document ou org.xml.sax.SAXException. Fait intéressant, le problème n'affectait que les classes XML de la dépendance Maven xml-apis-1.4.01.
Malgré l'impossibilité d'accéder à ces classes pendant le processus de build Eclipse, une build Maven s'est exécutée sans erreur. De plus, l'utilisation de Ctrl-LeftClick sur l'une des classes prétendument manquantes a permis à l'utilisateur de la localiser et de l'ouvrir dans l'éditeur d'Eclipse. Ainsi, il est apparu que le problème était isolé de la version Eclipse.
Pour remédier à la situation, l'utilisateur a tenté diverses solutions, notamment :
Aucune de ces mesures n'a résolu le problème.
Comprendre la cause profonde et trouver des solutions
Le problème sous-jacent vient de l'hypothèse selon laquelle le projet migrant depuis Java 1.8 ne dispose pas d'un fichier module-info.java, ce qui entraîne une compilation dans un « module sans nom ». Dans ce module, le code évalue les modules observables nommés et sans nom, y compris « java.xml » de la bibliothèque système JRE. Ce dernier donne accès à des packages comme java.xml.xpath.
Parallèlement à cela, le projet utilise xml-apis.java comme dépendance, qui propose un ensemble alternatif de packages avec des noms identiques (par exemple, java. xml.xpath). Comme les deux ensembles de packages résident dans le module sans nom, ils entrent en conflit, violant l'exigence de « visibilité unique » dans Java 1.8.
Pour résoudre le conflit, deux solutions sont disponibles :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!