Heim >Java >javaLernprogramm >Warum kann Eclipse meine XML-Klassen nach dem Wechsel zu JDK 10 nicht finden?

Warum kann Eclipse meine XML-Klassen nach dem Wechsel zu JDK 10 nicht finden?

Linda Hamilton
Linda HamiltonOriginal
2024-11-28 11:13:18560Durchsuche

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

Eclipse stößt auf Probleme beim Auffinden von XML-Klassen nach JDK 10 Build Path Switch

Bei der Arbeit an einem Maven-Projekt in Eclipse stieß ein Benutzer danach auf Schwierigkeiten Ändern des Java Build Path des Projekts auf JDK 10. Insbesondere konnte Eclipse keine XML-bezogenen Klassen mehr finden, z javax.xml.xpath.XPath, org.w3c.dom.Document oder org.xml.sax.SAXException. Interessanterweise betraf das Problem nur XML-Klassen aus der Maven-Abhängigkeit xml-apis-1.4.01.

Obwohl es während des Eclipse-Build-Prozesses nicht möglich war, auf diese Klassen zuzugreifen, wurde ein Maven-Build ohne Fehler ausgeführt. Darüber hinaus ermöglichte die Verwendung von Strg-Linksklick auf eine der angeblich fehlenden Klassen dem Benutzer, sie im Eclipse-Editor zu finden und zu öffnen. Somit schien das Problem auf den Eclipse-Build beschränkt zu sein.

Um die Situation zu beheben, versuchte der Benutzer verschiedene Lösungen, darunter:

  • Bereinigen des Projekts
  • Verwendung verschiedener Eclipse-Versionen (Sauerstoff und Photon)
  • Verwendung von JDK 8 und JDK 10 mit Eclipse
  • Anpassen des Compiler-Compliance-Levels des Projekts (was weiterhin problematisch war)

Keine dieser Maßnahmen hat das Problem behoben.

Verstehen der Grundursache und Finden Lösungen

Das zugrunde liegende Problem ergibt sich aus der Annahme, dass das Projekt von Java 1.8 migriert Es fehlt eine module-info.java-Datei, was zur Kompilierung innerhalb eines „unbenannten Moduls“ führt. Innerhalb dieses Moduls wertet der Code beobachtbare benannte und unbenannte Module aus, einschließlich „java.xml“ aus der JRE-Systembibliothek. Letzteres bietet Zugriff auf Pakete wie java.xml.xpath.

Gleichzeitig verwendet das Projekt xml-apis.java als Abhängigkeit, das einen alternativen Satz von Paketen mit identischen Namen anbietet (z. B. java. xml.xpath). Da sich beide Paketsätze im unbenannten Modul befinden, kommt es zu Konflikten, wodurch die Anforderung der „eindeutigen Sichtbarkeit“ in Java 1.8 verletzt wird.

Um den Konflikt zu lösen, stehen zwei Lösungen zur Verfügung:

  1. Fügen Sie dem Projekt eine module-info.java-Datei hinzu, um die Kontrolle darüber zu ermöglichen, welche Module (entweder java.xml oder xml.apis) es enthält nutzt.
  2. java.xml von beobachtbaren Modulen ausschließen. In Eclipse kann dies über das Dialogfeld „Modularitätsdetails“ erreicht werden, das sich auf der Registerkarte „Inhalt“ befindet. Durch das Verschieben von java.xml von „Explizit enthaltene Module“ zu „Verfügbare Module“ wird der Konflikt vermieden.

Das obige ist der detaillierte Inhalt vonWarum kann Eclipse meine XML-Klassen nach dem Wechsel zu JDK 10 nicht finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn