ホームページ >Java >&#&チュートリアル >JDK 10 にアップグレードした後、Eclipse Maven プロジェクトが XML クラスを見つけられないのはなぜですか?

JDK 10 にアップグレードした後、Eclipse Maven プロジェクトが XML クラスを見つけられないのはなぜですか?

DDD
DDDオリジナル
2024-12-07 13:51:17205ブラウズ

Why Does My Eclipse Maven Project Fail to Locate XML Classes After Upgrading to JDK 10?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。