在将Java版本更改为17之后,我无法构建Gradle项目。
我使用的是Gradle 7.3.1版本,Gradle属性中有以下行:
org.gradle.jvmargs=-Dfile.encoding=UTF-8 -Xms1g -Xmx4g -XX:+UseG1GC -XX:+CMSClassUnloadingEnabled
字符串
然后我得到以下错误
Unrecognized VM option 'CMSClassUnloadingEnabled'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
型
如果删除-XX:+CMSClassUnloadingEnabled
,则会出现以下错误:
Unable to make field private int java.lang.reflect.Field.modifiers accessible: module java.base does not "opens java.lang.reflect" to unnamed module @1b9ee3e0
型
1条答案
按热度按时间ig9co6j11#
字符串
是的,你是对的,那是因为AspectJ
假设你使用的是AspectJ加载时织入(LTW)而不是编译时织入,也许你应该阅读1.9.7以后每个版本的AspectJ release notes,支持Java 16+:
在Java 16+上使用LTW
请注意,如果你想在Java 16+上使用加载时织入,织入代理会与JEP 396 (Strongly Encapsulate JDK Internals by Default)和相关的后续JEP冲突。因此,您需要设置JVM参数
--add-opens java.base/java.lang=ALL-UNNAMED
以启用方面编织。这是由于织入器使用内部API的事实,当在不同的类加载器中定义类时,我们还没有找到合适的替代品。