【问题标题】:IDEA IllegalStateException: Service is dying when running JUnit test with KotlinIDEA IllegalStateException:使用 Kotlin 运行 JUnit 测试时服务正在死亡
【发布时间】:2017-04-02 18:59:55
【问题描述】:

昨天我正在处理我的代码库,我正在对我的代码运行单元测试,突然我在 IDEA 日志中看到了这一点:

错误:Kotlin:[内部错误] java.lang.IllegalStateException: 服务正在消亡 在 org.jetbrains.kotlin.daemon.common.CompileService$CallResult$Dying.get(CompileService.kt:60) 在 org.jetbrains.kotlin.daemon.common.CompileService$CallResult$Dying.get(CompileService.kt:59) 在 org.jetbrains.kotlin.compilerRunner.JpsKotlinCompilerRunner.compileWithDaemon(JpsKotlinCompilerRunner.kt:127) 在 org.jetbrains.kotlin.compilerRunner.JpsKotlinCompilerRunner.compileWithDaemonOrFallback(JpsKotlinCompilerRunner.kt:100) 在 org.jetbrains.kotlin.compilerRunner.JpsKotlinCompilerRunner.compileWithDaemonOrFallback(JpsKotlinCompilerRunner.kt:35) 在 org.jetbrains.kotlin.compilerRunner.KotlinCompilerRunner.runCompiler(KotlinCompilerRunner.kt:115) 在 org.jetbrains.kotlin.compilerRunner.JpsKotlinCompilerRunner.runK2JvmCompiler(JpsKotlinCompilerRunner.kt:65) 在 org.jetbrains.kotlin.jps.build.KotlinBuilder.compileToJvm(KotlinBuilder.kt:740) 在 org.jetbrains.kotlin.jps.build.KotlinBuilder.doCompileModuleChunk(KotlinBuilder.kt:458) 在 org.jetbrains.kotlin.jps.build.KotlinBuilder.doBuild(KotlinBuilder.kt:264) 在 org.jetbrains.kotlin.jps.build.KotlinBuilder.build(KotlinBuilder.kt:181) 在 org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1282) 在 org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:956) 在 org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:1028) 在 org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:915) 在 org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:741) 在 org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:387) 在 org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:195) 在 org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:138) 在 org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:295) 在 org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:125) 在 org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler$1.run(BuildMain.java:238) 在 org.jetbrains.jps.service.impl.SharedThreadPoolImpl$1.run(SharedThreadPoolImpl.java:44) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745)

这是来自 JetBrains 的愚人节玩笑吗?

我以前从未见过这种情况。 killall java 和 IDEA 重启解决了这个问题,我无法重现这个问题。这是记录在案的东西(我没有在谷歌上找到任何点击)还是在编译 Kotlin 代码时只是 IDEA 中的一次性故障? 这个错误是什么意思?

请注意我运行的单元测试是一个简单的探索性测试,我认为它在这里无关紧要:

internal fun fetchAsListWithSiblings(): List<Message<T>> {
    val first = this
    var currentMsg = first
    val result = mutableListOf(currentMsg)
    while(currentMsg.next.isPresent) {
        val next = currentMsg.next.get()
        currentMsg = next
        result.add(next)
    }
    return result
}


@Test
fun shouldFetchSiblingsWhenFetchSiblingsIsCalledWithMultipleSiblings() {
    val expected = listOf("foo", "bar", "baz")
    val messages = Message.createMultiple(expected)

    assertThat(messages.fetchAsListWithSiblings().map { it.payload }).isEqualTo(expected)
}

【问题讨论】:

  • 这是来自 JetBrains 的愚人节玩笑吗?”并不是提问的重要部分。

标签: intellij-idea kotlin


【解决方案1】:

这是已知问题 - 并行编译开始时的竞争条件。通常重复构建可以解决它。这是 YouTrack 中的相关issue KT-15562。这个问题应该在 Kotlin 1.1.2 版本中最终得到解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-22
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    相关资源
    最近更新 更多