我正在构建一个用Kotlin编写的库,并通过Maven将其打包为jar。在我的pom中,我依赖于kotlin-reflect工件。我能够成功地编译和打包,但是当我尝试在另一个项目(即服务)中使用这个jar时,我得到一个错误消息:“在运行时找不到kotlin反射实现。请确保在类路径中有kotlin-flect.jar”。如果我在服务的pom中包含依赖项,一切都会正常工作,但我希望库jar本身已经具有该依赖项,而库的使用者不必将该依赖项添加到他们的pom.xml中。
我尝试将依赖项中的作用域从编译更改为运行时。我只是不明白为什么kotlin-reflect不会被打包到库的jar中。
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-reflect</artifactId>
<version>1.3.50</version>
</dependency>服务中出现的错误:
线程"main“kotlin.jvm.KotlinReflectionNotSupportedError中出现异常:运行时未找到Kotlin反射实现。确保在类路径中有kotlin-flect.jar。
发布于 2019-11-09 01:24:20
你构建的是一个“瘦”jar:它只包含从项目中的代码编译而来的类,而不包含依赖项。
(您仍然需要在POM中指定依赖项,否则它将无法编译您的代码。)
所以你的主要选择是:
如果这是针对web应用程序的,尤其是使用Spring或类似的,那么您可以构建一个.war文件,它无论如何都会捆绑依赖项。
https://stackoverflow.com/questions/58768930
复制相似问题