質問: JDKをJDK8 → JDK11に変更してビルドした際に以下のエラーが発生しました。 このエラーの回避方法が分からないのですが、 ご存知の方がいらっしゃればご教授いただけますでしょうか。 エラー パッケージ javax.sql は複数のモジュールからアクセス可能です: , java.sql 環境 ・Windows 10 ・Oracle OpenJDK11 ・Eclipse2020 (補足) 1)現在分かっていることは、 Javaのビルドパスに「j2ee.jar」を追加すると上記エラーが発生します。 Javaのビルドパスから「j2ee.jar」を削除すると上記エラーは消えますが、 「j2ee.jar」を使用しているプログラムの箇所でエラー(class not found)が発生します。 2)Eclipseから以下の操作を実施しましたが、エラーは解消されません。 該当プロジェクトを右クリック→プロパティ→Javaのビルド・パス→ライブラリータブ→ クラスパスの方に該当プロジェクトで使用するjarファイルを設定する。 (JREシステム・ライブラリーはモジュールパスにあります。) ![画像の説明をここに入力](https://i.stack.imgur.com/4kX7b.png) よろしくお願いいたします。
回答: `javax.sql` がクラスパス、モジュールパスの両方に含まれているのが原因だと思われます。 今回の場合、JDK, `jee.jar`の双方に含まれているのでしょう。 例えば次のような対処が考えられます。 * `jee.jar` から `javax/sql` を取り除く * `jee.jar`の代わりに、より新しいものを利用する。 + `jee.jar`が何者なのか分かりませんが、例えば`javax:javaee-api`で代替可能であれば、いずれのバージョンにも `javax/sql` は含まれていないようです。 参考: * Eclipse is confused by imports (“accessible from more than one module”) - Stack Overflow