1. ホーム
  2. java

[解決済み] org.springframework.cglib.core.ReflectUtils$1 による不正な反射的アクセス

2022-02-12 19:03:22

質問

JDK 9+181 Spring Boot 2.0.0.BUILD-SNAPSHOT CLI アプリケーションで、起動時にこの警告が表示されます。

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.springframework.cglib.core.ReflectUtils$1 (jar:file:/home/jan/src/fm-cli/target/fm-cli-0.1.0-SNAPSHOT.jar!/BOOT-INF/lib/spring-core-5.0.0.RELEASE.jar!/) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of org.springframework.cglib.core.ReflectUtils$1

コンソールアプリケーションなので、この警告を無効にしたいのですが、どうすればよいでしょうか?

注意 この質問は、Springによって引き起こされるこの警告を無効にする方法という具体的な質問であり、以下の質問と重複するものではありません。 JDK9: 不正な反射アクセス操作が発生しました org.python.core.PySystemState は、別のライブラリで同様の症状を扱ったものです。

解決するには?

JDK 9+では、JVMに以下のオプションを追加して、SpringのCGLIB使用による警告を無効にしてください。

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

を例にとります。

java --add-opens java.base/java.lang=ALL-UNNAMED -jar target/*.jar

報告する必要はありません。 Springの既知のバグ .

これは、新しい JDK 9 モジュールシステムが、いつか (近いうちに) 禁止されるであろう不正なアクセスを検出したために起こります。詳しくは JDK 9 モジュールシステム .

更新情報 :

この問題の修正は、JDK 9+ と Spring 5.1+ で利用可能です。