Mej*_*ari 5 java dependencies 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] +- com.example.service.search:search-client:jar:kotlin:2.0.3-SNAPSHOT:compile
Run Code Online (Sandbox Code Playgroud)
主要项目POM
...
<dependency>
<groupId>com.example.service.search</groupId>
<artifactId>search-client</artifactId>
<version>2.0.3-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
...
Run Code Online (Sandbox Code Playgroud)
新的 Kotlin 项目 POM
...
<properties>
<kotlin.version>1.1.2-2</kotlin.version>
</properties>
...
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test</artifactId>
<version>${kotlin.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
...
<build>
<plugins>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1647 次 |
最近记录: |