Eclipse で JDK 10 ビルド パスの切り替え後の XML クラスの検索に関する問題が発生しました
Eclipse 内で Maven プロジェクトで作業しているときに、ユーザーが問題に遭遇しました。プロジェクトの Java ビルド パスを JDK 10 に変更します。具体的には、Eclipse は次のようになりました。 javax.xml.xpath.XPath、org.w3c.dom.Document、org.xml.sax.SAXException などの XML 関連クラスが見つかりません。興味深いことに、この問題は Maven 依存関係 xml-apis-1.4.01.
の XML クラスのみに影響を及ぼしました。Eclipse ビルド プロセス中にこれらのクラスにアクセスできないにもかかわらず、Maven ビルドはエラーなしで実行されました。さらに、欠落しているとされるクラスの 1 つで Ctrl キーを押しながら左クリックすると、ユーザーは Eclipse エディタ内でそのクラスを見つけて開くことができました。したがって、問題は Eclipse ビルドに限定されているように見えました。
状況を修正するために、ユーザーは次のようなさまざまな解決策を試みました。
これらの対策はどれも問題を解決しませんでした。
ルートの理解原因と解決策
根本的な問題これは、Java 1.8 から移行するプロジェクトには module-info.java ファイルが欠如しており、その結果「名前のないモジュール」内でコンパイルされるという仮定に基づいています。このモジュール内で、コードは、JRE システム ライブラリの「java.xml」など、監視可能な名前付きモジュールと名前なしモジュールを評価します。後者は、java.xml.xpath.
のようなパッケージへのアクセスを提供します。これと同時に、プロジェクトは xml-apis.java を依存関係として使用します。これにより、同一名のパッケージの代替セットが提供されます (例: java.xpath)。 xml.xpath)。両方のパッケージ セットが名前のないモジュールに存在するため、競合し、Java 1.8 の「一意の可視性」の要件に違反します。
競合を解決するには、次の 2 つの解決策が利用可能です:
以上がJDK 10 に切り替えた後、Eclipse が XML クラスを見つけられないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。