Maison >Java >javaDidacticiel >Pourquoi est-ce que j'obtiens des erreurs de chemin de construction Eclipse avec les classes XML après la migration vers JDK 10 ?
Problème de chemin de construction Eclipse avec les classes XML après la migration vers JDK 10
Lors de la migration d'un projet Maven de Java 8 vers JDK 10, les utilisateurs d'Eclipse peut rencontrer une erreur de construction impliquant des classes telles que javax.xml.xpath, org.w3c.dom.Document et org.xml.sax.SAXException. Ce problème survient spécifiquement lors du passage du chemin de construction Java du projet vers JDK 10.
Cause première
Le problème vient du fait que le projet ne dispose pas d'informations sur le module. fichier java. Cette configuration entraîne la compilation du code dans le « module sans nom ». Le module sans nom peut charger des packages à partir de tous les modules observables et, dans ce cas, inclut des packages tels que java.xml de Java Runtime Environment et xml-apis de la dépendance Maven.
Violation des règles
Cette situation contrevient à la spécification du langage Java (JLS) §7.4.3, qui exige une visibilité unique pour les noms de types qualifiés. Dans ce cas, les packages de java.xml et xml-apis fournissent des définitions contradictoires pour java.xml.xpath et les classes associées.
Solutions
1 . Ajoutez un fichier module-info.java
Implémentez un fichier module-info.java et spécifiez les modules requis, soit nécessite java.xml ; ou nécessite xml.apis ;, pour résoudre le problème de visibilité.
2. Excluez java.xml des modules observables
Évitez le conflit en excluant java.xml de la liste des modules observables. Ceci peut être réalisé via la boîte de dialogue « Détails de la modularité » dans Eclipse.
Implications et conclusion
Bien que javac ne puisse pas rejeter le code erroné, il est incorrect selon le JLS. La messagerie d'erreur Eclipse a depuis été améliorée pour fournir une indication plus spécifique du problème sous-jacent. Il est conseillé aux développeurs de respecter les directives de modularité de Java et de garantir une visibilité unique pour leurs modules afin d'éviter de telles erreurs de construction.
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!