"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-12-22
Parcourir:653

Why Can\'t Eclipse Find My XML Classes After Switching to JDK 10?

Eclipse ne parvient pas à localiser les classes XML après la transition du chemin de construction du JDK 10 : résolution

Lors de la tentative de basculement du chemin de construction d'un projet Maven vers le JDK 10 dans Eclipse, les utilisateurs peuvent rencontrer un problème où les processus de construction d'Eclipse ne parviennent pas à localiser les classes liées à XML, notamment javax.xml.xpath.XPath, org.w3c.dom.Document et org.xml.sax.SAXException. Ces difficultés affectent principalement les classes dérivées de la dépendance xml-apis-1.4.01.

Cause première

Le comportement est déclenché lorsqu'un projet passe de Java 1.8 à Java 10 sans être explicitement déclaré comme module à l'aide d'un fichier module-info.java. Cela signifie que le code du projet est compilé dans le module sans nom, qui a une visibilité complète des modules nommés et sans nom, y compris java.xml de la bibliothèque système JRE, qui exporte ces packages problématiques.

De plus, xml- apis.java sur le chemin de classe fournit un autre ensemble de ces mêmes packages. Cependant, ces packages sont associés au module sans nom, conduisant à une violation de l'exigence de « visibilité unique » telle que définie dans JLS §7.4.3. Par conséquent, le programme devient invalide et est rejeté par les compilateurs.

Solution

Pour résoudre ce problème, l'une des trois approches suivantes peut être adoptée :

(1) Déclarer le projet en tant que module

Introduire un fichier module-info.java dans le projet, définissant les modules spécifiques que le projet doit lire via le utilisation du mot-clé "requiert". Cette approche garantit une visibilité unique en indiquant explicitement quels packages sont importés.

(2) Limiter les modules observables

Sans convertir le projet en module, il est possible d'exclure java.xml à partir de l'ensemble des modules observables. Dans Eclipse, cela peut être accompli via la boîte de dialogue « Détails de la modularité », sous l'onglet « Contenu ». Il peut être nécessaire de déplacer la plupart des modules, à l'exception de java.base, vers la colonne "Modules disponibles" et de rajouter sélectivement les modules essentiels.

(3) Exclure java.xml (bug JDK)

Cette approche est moins recommandée, car elle profite d'un bug de javac qui permet à la situation illégale de passer la compilation. En déplaçant java.xml à la fin du chemin de construction, il peut être efficacement masqué du module sans nom. Cependant, cela peut conduire à un comportement inattendu et ne constitue pas une solution fiable à long terme.

En conclusion, le problème de classe non trouvée lié à XML lors du passage au JDK 10 dans Eclipse est dû à une violation des exigence de visibilité unique. Le problème est résolu soit en modularisant le projet, soit en limitant les modules observables.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3