小编Mej*_*ari的帖子

使用 Kotlin 的 Maven 依赖没有引入 Kotlin 类

我有两个项目,一个依赖于另一个。我已将依赖项项目转换为 Kotlin,但是现在当 maven 从我的本地 maven 存储库中提取已发布的依赖项时,父项目没有接收依赖项所需的 Kotlin 内部库。

大纲:
Main Project
  ? Now-Kotlin Project
          ? Kotlin Std-lib
Run Code Online (Sandbox Code Playgroud)

这会导致java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics运行主项目时出现异常。

现在的 Kotlin 项目有kotlin-maven-plugin插件并kotlin-stdlib在它的 pom.xml 中定义。

父项目将 now-Kotlin 项目列为依赖项,并且它被正确导入,它是找到和使用的类,等等......在 IntelliJ 中就好了。

在 tomcat 上编译和启动主项目的应用程序正常工作,直到第一次调用来自 now-Kotlin 项目的代码,这导致

org.apache.catalina.core.ApplicationContext log
SEVERE: StandardWrapper.Throwable
java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
....
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
Run Code Online (Sandbox Code Playgroud)

我的假设是 Kotlin 库将遵循 Maven 的正常依赖项规则,并且org.jetbrains.kotlin来自的包kotlin-stdlib将与任何传递依赖项相同。

将这些依赖项包含到主项目中的正确方法是什么?

更新

主要项目mvn dependency:tree相关部分:

[INFO] --- maven-dependency-plugin:2.10:tree (default-cli) @ example-core ---
[INFO] com.example:example-core:jar:1.17.0-SNAPSHOT
[INFO] +- …
Run Code Online (Sandbox Code Playgroud)

java dependencies maven kotlin

5
推荐指数
0
解决办法
1647
查看次数

标签 统计

dependencies ×1

java ×1

kotlin ×1

maven ×1