使用Gradle构建Kotlin项目有时会导致NoClassDefFoundError失败

我不能可靠地重现这个问题,因为它是零星的。 这是我用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 --no-daemon --parallel
  • 我在Docker和我的本地机器上尝试了这一点(这甚至发生在CI服务器上)
  • 这个错误是完全零星的,我无法查明原因
  • 它也发生在单个和多个模块项目中
  • 删除--parallel或添加 – --parallel选项没有帮助
  • 我正在使用Gradle 4.2

可能是什么问题呢?

2 Solutions collect form web for “使用Gradle构建Kotlin项目有时会导致NoClassDefFoundError失败”

这是Kotlin的一个已知问题 。 不幸的是在这个时候,我们不知道究竟是什么原因造成的。

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

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

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

欲了解更多信息,请参阅Kotlin社区 。

  • 我怎样才能直接从Kotlin源使用Java String方法(split)?
  • 无法转换为org.jetbrains.kotlin.java.model.types.JeClassInitializerExecutableTypeMirror
  • “”Java“”不被识别为内部或外部命令,程序或批处理文件。 在Kotlin
  • 如何在IntelliJ IDEA中禁用“将Java转换为Kotlin”?
  • kotlin-android null不能转换为非nulltypeskotlin.String
  • JsonView在Spring + Kotlin中
  • 在Kotlin中如何读取和解析json文件
  • Android的测试在领域的kotlin
  • 为什么var foo = null编译
  • Kotlin:迭代一个具有解构条目的地图是不是可能的? 错误?
  • 有没有办法在Kotlin的数据类中嵌套一个枚举?
  • Kotlin language will be the best programming language for Android.