cypher256 / pleiades.io

Pleiades による Eclipse などの IDE 製品翻訳や JetBrains 製品のオンラインヘルプ日本語サイト https://pleiades.io や https://spring.pleiades.io の誤訳や問題を管理します。
https://willbrains.jp/
27 stars 2 forks source link

パッケージ xxx は複数のモジュールからアクセス可能です: <unnamed>, java.xml #160

Closed cypher256 closed 1 month ago

cypher256 commented 3 months ago

問題点

Eclipse で Java 9 以上を使用したときに、以下のビルドエラーが発生する場合があります。 javac や gradle、maven のコマンドでコンパイルした場合は、エラーが発生しません。

image

パッケージ javax.xml.parsers は複数のモジュールからアクセス可能です: <unnamed>, java.xml
パッケージ javax.xml.transform は複数のモジュールからアクセス可能です: <unnamed>, java.xml
パッケージ javax.xml.transform.dom は複数のモジュールからアクセス可能です: <unnamed>, java.xml
パッケージ javax.xml.transform.stream は複数のモジュールからアクセス可能です: <unnamed>, java.xml
パッケージ org.w3c.dom は複数のモジュールからアクセス可能です: <unnamed>, java.xml

原因

Java 仕様に厳密に従ったとされる Eclipse JDT でのみ発生するエラーです。しかし、元の Project Jigsaw の設計によれば、パッケージが名前付きモジュールと名前なしモジュールの両方で定義されている場合、名前なしモジュールのパッケージは無視されなければなりません。

対応

Pleiades All in One 2024-06 以降のリリースで、エラーが発生しないように Pleiades All in One の自動デフォルト設定機能で対応します。Eclipse 上でのエラー回避のために、Gradle や Maven で依存関係を除外設定する必要はありません。

workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs に下記設定を追加

org.eclipse.jdt.core.compiler.ignoreUnnamedModuleForSplitPackage=enabled
cypher256 commented 1 month ago

Pleiades All in One 2024-06 で対応済み