Java 使用Gradle构建Kotlin项目有时会因NoClassDefFoundError而失败

Java 使用Gradle构建Kotlin项目有时会因NoClassDefFoundError而失败,java,gradle,kotlin,Java,Gradle,Kotlin,我不能可靠地重现这个问题,因为它是零星的。这就是我在使用Gradle构建Kotlin项目时得到的结果: Could not perform incremental compilation: Could not connect to Kotlin compile daemon Could not connect to kotlin daemon. Using fallback strategy. :myproj:compileKotlin FAILED 1 actionable task: 1 e

我不能可靠地重现这个问题,因为它是零星的。这就是我在使用Gradle构建Kotlin项目时得到的结果:

Could not perform incremental compilation: Could not connect to Kotlin compile daemon
Could not connect to kotlin daemon. Using fallback strategy.
:myproj:compileKotlin FAILED
1 actionable task: 1 executed
e: java.lang.NoClassDefFoundError: Could not initialize class kotlin.Unit
warning: the '-d' option with a directory destination is ignored because '-Xbuild-file' is specified
Exception in thread "Thread-25" java.lang.NoClassDefFoundError: Could not initialize class kotlin.Unit
    at org.jetbrains.kotlin.compilerRunner.UtilsKt$runToolInSeparateProcess$readErrThread$1$1.invoke(utils.kt)
    at kotlin.io.TextStreamsKt.forEachLine(ReadWrite.kt:154)
    at org.jetbrains.kotlin.compilerRunner.UtilsKt$runToolInSeparateProcess$readErrThread$1.invoke(utils.kt:68)
    at org.jetbrains.kotlin.compilerRunner.UtilsKt$runToolInSeparateProcess$readErrThread$1.invoke(utils.kt)
    at kotlin.concurrent.ThreadsKt$thread$thread$1.run(Thread.kt:18)
e: java.lang.NoClassDefFoundError: Could not initialize class kotlin.Unit
...
我使用以下选项运行Gradle

  • gradle-assemble—无守护进程—并行
  • 我在Docker和我的本地机器上也尝试过这一点(这甚至在CI服务器上也发生过)
  • 这个错误是完全偶然的,我无法找出原因
  • 单模块和多模块项目也会出现这种情况
  • 删除
    --parallel
    或添加
    --daemon
    选项没有帮助
  • 我使用的是Gradle
    4.2

可能是什么问题?

这是一个问题。不幸的是,目前我们还不知道到底是什么原因造成了这个问题。

这个问题的原因与使用两个或多个不同的Kotlin版本有关。就我而言,我使用Android Studio 3和IntelliJ IdeaU 2017。我使用的解决方案是:

  • 在任一IDE中检查Kotlin版本。在这种情况下,您应该将Kotlin的编译器更新为相同的版本

  • 如果只使用一个IDE,最好的解决方案是删除IDE和所有缓存


有关更多信息,请参阅。

Gradle版本?能否在此发布您的依赖项列表及其版本?我更新了我的问题。我的依赖关系并不重要,因为所有类型的Kotlin项目都会发生这种情况。@AdamArold如果您为两个
Kotlin
依赖关系使用不同版本的
Kotlin
则很重要请至少提供Kotlin gradle插件的版本。