如何解决Gradle Ktlint 插件在 Java 16 上失败
升级到 Java 16 后,我无法使 ktlint gradle 插件正常工作。扔了
Execution Failed for task ':runktlintCheckOverMainSourceSet'.
A failure occurred while executing org.jlleitschuh.gradle.ktlint.worker.ktlintWorkAction
java.lang.ExceptionInInitializerError (no error message)
Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution Failed for task ':runktlintCheckOverMainSourceSet'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$3(ExecuteActionsTaskExecuter.java:186)
at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:268)
Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing org.jlleitschuh.gradle.ktlint.worker.ktlintWorkAction
at org.gradle.workers.internal.DefaultWorkerExecutor$WorkItemExecution.waitForCompletion(DefaultWorkerExecutor.java:336)
at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:142)
at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:94)
...
Caused by: java.lang.ExceptionInInitializerError
at org.jetbrains.kotlin.com.intellij.pom.java.languageLevel.<clinit>(LanguageLevel.java:25)
at org.jetbrains.kotlin.com.intellij.core.CoreLanguageLevelProjectExtension.<init>(CoreLanguageLevelProjectExtension.java:26)
at org.jetbrains.kotlin.com.intellij.core.JavaCoreProjectEnvironment.<init>(JavaCoreProjectEnvironment.java:42)
...
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected void java.util.ResourceBundle.setParent(java.util.ResourceBundle) accessible: module java.base does not "opens java.util" to unnamed module @58f87189
at org.jetbrains.kotlin.com.intellij.util.ReflectionUtil.makeAccessible(ReflectionUtil.java:252)
at org.jetbrains.kotlin.com.intellij.util.ReflectionUtil.getDeclaredMethod(ReflectionUtil.java:269)
at org.jetbrains.kotlin.com.intellij.DynamicBundle.<clinit>(DynamicBundle.java:22)
... 32 more
我知道这是由更严格的模块检查 (JEP 396) 引起的,但我无法为插件设置 JVM 参数。我试过了:
- 设置环境变量
JAVA_OPTS=--illegal-access=warn
- 在
org.gradle.jvmargs=--illegal-access=warn -Dkotlin.daemon.jvm.options=--illegal-access=warn
中设置gradle.properties
但两种尝试都没有帮助,我没有想法。
解决方法
Gradle 6.x 似乎不支持 Java 16,Gradle 7 将支持。
,您可以根据migration guide更新 Gradle 插件以获取最新版本:
gradle wrapper --gradle-version 7.0
这应该可以修复此错误消息。否则,您也可以更改文件 gradle/wrapper/gradle-wrapper.properties
中的版本。
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-bin.zip
我还将 kotlin("jvm")
等 kotlin 插件更新到最新版本 1.4.32
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。