module XXX(java.baseなど) does not “opens YYY(java.langなど)” to module ZZZ(org.javassistなど)のエラーメッセージが出たときの解決方法

Javaのモジュールシステム(JavaPlatform Module System)関連のエラーが出たときの解決方法のメモ書きです。

module XXX does not “opens YYY” to module ZZZ の意味から解決方法はわかる

module XXX does not “opens YYY” to module ZZZ を訳すと、モジュールXXXはYYYをモジュールZZZに対してオープンしていない、という意味でしょう。

エラー原因をわかりやすく書いてくれているので、対象パッケージ(YYY)を対象モジュール(ZZZ)に対してオープンするように指示するように修正すれば解決となります。

VM引数に下記のオプションをつければ、エラーはなくなります。

--add-opens モジュール名/パッケージ名=モジュール名

例 : --add-opens java.base/java.lang=org.javassist 

私は InaccessibleObjectException の発生時に出てきました。
ディープ・リフレクションしたいときに遭遇するエラーっぽいですね。
(JDK内の強力なカプセル化)

タイトルとURLをコピーしました