Powermock と JDK 17 の互換性 質問する

Powermock と JDK 17 の互換性 質問する

最近、プロジェクトを JDK 11 から JDK 17 にアップグレードしました。アップグレード後、powermock に問題が発生しているようです。AUT の実行中に、次のエラーが発生します。

java.lang.RuntimeException: PowerMock internal error: Should never throw exception at this level
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected native java.lang.Object java.lang.Object.clone() throws java.lang.CloneNotSupportedException accessible: module java.base does not "opens java.lang" to unnamed module @3fc34119

この問題の回避策をご存知ですか? もしご存知であれば、解決策を提供してください。

ベストアンサー1

暫定的な対策として (Powermock が更新されるまで)、次の引数を JVM に渡すことでテストを実行できるはずです。

--add-opens java.base/java.lang=ALL-UNNAMED

を使用してテストを実行している場合はMaven、次のように設定できますsurefire-plugin

<plugin>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>${plugin.surefire.version}</version>
  <configuration>
    <argLine>--add-opens java.base/java.lang=ALL-UNNAMED</argLine>
  </configuration>
</plugin>

おすすめ記事