Eclipse ビルド エラー: JDK 10 アップグレード後の XML クラスの検索
何人かのユーザーが、Java ビルド パスを切り替えた後、複雑な問題に遭遇しました。 Maven プロジェクトを JDK 10 に移行します。Eclipse ビルドは XML 処理に関連するクラスを見つけることができません。 javax.xml.xpath.XPath や org.w3c.dom.Document など。興味深いことに、Eclipse からの Maven ビルドはエラーなしで実行されます。
根本原因: モジュールの競合
この問題の根本原因は、プロジェクトにモジュール情報が欠如していることにあります。 .java ファイル。このファイルがないと、プロジェクトは「名前のないモジュール」に常駐し、JRE の「java.xml」やプロジェクト独自のクラスパスの「xml.apis」など、監視可能なすべての名前付きモジュールと名前なしモジュールを読み取ります。
一意の可視性要件
この状況は、Java 言語仕様の「一意の可視性要件」に違反します。可視性」要件。すべての修飾された型名には、一意に表示されるパッケージが必要です。ただし、「java.xml」と「xml.apis」の両方が同じ名前 (java.xml.xpath など) のパッケージを提供しているため、競合が発生します。
潜在的な解決策
この問題を解決するには、次の解決策を検討してください。
1. module-info.java ファイルを追加します
このファイルを使用すると、プロジェクトが読み取るモジュールを制御できます。 require java.xml を指定することで;または xml.apis; が必要な場合は、依存関係を明示的に定義して競合を回避できます。
2. Eclipse での競合の回避
module-info.java ファイルを追加しなくても、[モジュール性の詳細] ダイアログを使用して Eclipse での競合を回避できます。 java.base を除くすべてのモジュールを左側 (「使用可能なモジュール」) に移動し、必要なモジュールを選択して再度追加します。
これらの解決策にもかかわらず、Eclipse エラー メッセージは不正確なままであり、実際の問題を正確に特定できません。 。メッセージは改善されましたが、根本的な問題は残ります。
以上がJDK 10 にアップグレードした後、Eclipse Maven プロジェクトが XML クラスを見つけられないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。