在 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 文件删除哪些内容

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

研究

有几个地方对此进行了讨论(例如 herehere),但我找不到与我遇到的问题相匹配的任何内容或建议解决该问题的解决方案对我来说。

最有趣的是 this one,这与从 Kotlin 版本 1.3.x 迁移到 1.4.x 无关,但是,讨论中涉及到 kotlin-stdlib[...] 的相互依赖关系, kotlin-reflect 和 Java 本身,来自 JetBrain 开发人员“Udalov” (direct link to comment)。这些细节超出了我的理解,可能与此处无关,但这是我见过的解决此问题的技术性最强的答案。

我的尝试

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

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)