首页 > 解决方案 > 为什么在 TeamCity DSL 中使用“copy”时会出现“java.lang.AssertionError: Built-in class kotlin.Any is not found”?

问题描述

背景

我正在尝试使用 Kotlin 创建一些 Teamcity 配置。在测试 Teamcity 的生成时,我在 Intellij 中使用了 Maven,尽管我使用命令行得到了相同的结果。

问题

一个最小的例子:https ://gist.github.com/3761e6f3847db9f8f772c9e16663aaa9

要重新创建问题,请使用以下命令: mvn teamcity-configs:generate

错误是:

[ERROR] Runtime error RootProjectId: kotlin.reflect.jvm.internal.impl.builtins.KotlinBuiltIns$3[113]: java.lang.AssertionError: Built-in class kotlin.Any is not found

尽管我已采取措施最小化提供的示例,但我不是 Maven 专家,我不确定还有什么可以从pom.xml文件中删除。

问题似乎源于尝试使用 to copy(cf., docs ),这似乎使 Kotlin 因一些反射问题而绊倒。删除copy并且配置的生成工作正常。

研究

有几个地方讨论了这个问题(例如这里这里),但我找不到任何与我遇到的问题相匹配的地方,也找不到为我解决问题的解决方案。

最有趣的是这个,它与从 Kotlin 版本 1.3.x 迁移到 1.4.x 无关,但是,kotlin-stdlib[...]JetBrainkotlin-reflect开发人员“Udalov”(直接链接到评论)。细节在我头上,可能与这里无关,但这是我见过的解决这个问题的最具技术性的答案。

我试过的

我尝试将其添加kotlin-reflect为显式依赖项并确保它kotlin-stdlib-jdk8存在且正确。我尝试将 Kotlin 版本从 1.3.70 更改为 1.3.72 再到 1.4.32,结果没有改变。

对此的任何帮助或见解将不胜感激,即使只是为了增进我对这个软件堆栈的理解。

标签: mavenkotlinteamcitydslkotlin-reflect

解决方案


推荐阅读