Плагин 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 для плагина. Я старался:

  • Установка переменной env JAVA_OPTS=--illegal-access=warn
  • Параметр org.gradle.jvmargs=--illegal-access=warn -Dkotlin.daemon.jvm.options=--illegal-access=warn в gradle.properties

Но ни одна из попыток не помогла, у меня нет идей.

2 ответа

Похоже, что Java 16 не поддерживается Gradle 6.x и будет поддерживаться Gradle 7.

Вы можете обновить плагин Gradle, чтобы получить последнюю версию в соответствии с по руководствоммиграции :

      gradle wrapper --gradle-version 7.0

Это должно исправить это сообщение об ошибке. В противном случае вы также можете изменить версию в файле gradle/wrapper/gradle-wrapper.properties.

      distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-bin.zip

Я также обновил плагины kotlin, такие как kotlin("jvm") до последней версии 1.4.32.

Другие вопросы по тегам