首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么kotlin-reflect库不能从我打包的jar中获得?

为什么kotlin-reflect库不能从我打包的jar中获得?
EN

Stack Overflow用户
提问于 2019-11-08 22:55:37
回答 1查看 266关注 0票数 0

我正在构建一个用Kotlin编写的库,并通过Maven将其打包为jar。在我的pom中,我依赖于kotlin-reflect工件。我能够成功地编译和打包,但是当我尝试在另一个项目(即服务)中使用这个jar时,我得到一个错误消息:“在运行时找不到kotlin反射实现。请确保在类路径中有kotlin-flect.jar”。如果我在服务的pom中包含依赖项,一切都会正常工作,但我希望库jar本身已经具有该依赖项,而库的使用者不必将该依赖项添加到他们的pom.xml中。

我尝试将依赖项中的作用域从编译更改为运行时。我只是不明白为什么kotlin-reflect不会被打包到库的jar中。

代码语言:javascript
复制
<dependency>
  <groupId>org.jetbrains.kotlin</groupId>
  <artifactId>kotlin-reflect</artifactId>
  <version>1.3.50</version>
</dependency>

服务中出现的错误:

线程"main“kotlin.jvm.KotlinReflectionNotSupportedError中出现异常:运行时未找到Kotlin反射实现。确保在类路径中有kotlin-flect.jar。

EN

回答 1

Stack Overflow用户

发布于 2019-11-09 01:24:20

你构建的是一个“瘦”jar:它只包含从项目中的代码编译而来的类,而不包含依赖项。

(您仍然需要在POM中指定依赖项,否则它将无法编译您的代码。)

所以你的主要选择是:

  • 分发您的“瘦”jar。*如果这是供您自己使用的,您可以将依赖项jar复制到您的目标环境中,并将它们添加到您的类路径中。*或者对于您从外部提供的库,您可以简单地在您发布的POM中列出依赖项;然后您的用户应从那里获取它们。
  • 构建一个“胖”jar,它捆绑了除您的代码之外的所有依赖项。有关这方面的一些信息,请参阅this question

如果这是针对web应用程序的,尤其是使用Spring或类似的,那么您可以构建一个.war文件,它无论如何都会捆绑依赖项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58768930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档