【问题标题】:Gradle Ktlint plugin fails on Java 16Gradle Ktlint 插件在 Java 16 上失败
【发布时间】:2021-06-22 15:33:22
【问题描述】:

升级到 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
  • gradle.properties 中设置org.gradle.jvmargs=--illegal-access=warn -Dkotlin.daemon.jvm.options=--illegal-access=warn

但是这两种尝试都没有帮助,我没有想法。

【问题讨论】:

标签: java gradle java-platform-module-system ktlint java-16


【解决方案1】:

Gradle 6.x 似乎不支持 Java 16,Gradle 7 将支持。

【讨论】:

    【解决方案2】:

    您可以根据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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-04
      • 2021-07-08
      • 2022-06-13
      • 2020-01-12
      • 2021-08-11
      • 2016-12-31
      • 1970-01-01
      • 2013-02-23
      相关资源
      最近更新 更多