Maison >Java >javaDidacticiel >Pourquoi Eclipse ne parvient-il pas à trouver mes classes XML après le passage au JDK 10 ?

Pourquoi Eclipse ne parvient-il pas à trouver mes classes XML après le passage au JDK 10 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-28 11:13:18536parcourir

Why Can't Eclipse Find My XML Classes After Switching to 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 :

  • Nettoyer le projet
  • Utilisation de différentes versions d'Eclipse (Oxygen et Photon)
  • Utilisation à la fois du JDK 8 et du JDK 10 avec Eclipse
  • Ajustement du niveau de conformité du compilateur du projet (qui restait problématique)

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 :

  1. Ajoutez un fichier module-info.java au projet, permettant de contrôler quels modules (java.xml ou xml.apis) il utilise.
  2. Exclure java.xml des modules observables. Dans Eclipse, cela peut être réalisé via la boîte de dialogue « Détails de la modularité », située sous l'onglet « Contenu ». En déplaçant java.xml de « Modules explicitement inclus » vers « Modules disponibles », le conflit est évité.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn