首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >马文。传递依赖

马文。传递依赖
EN

Stack Overflow用户
提问于 2010-05-27 01:17:36
回答 4查看 37.7K关注 0票数 38

我的项目P依赖于依赖关系A,而依赖关系B又依赖于依赖关系B。我的项目的pom.xml文件包含A作为依赖关系,它的jar包含在P的类路径中。但是,在P的运行时抛出了一个NoClassDefFoundError,这源于缺少B jars。

Maven不是应该自动下载这些依赖项吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-27 03:14:39

我的项目P依赖于具有编译作用域的依赖项A,依赖于依赖项B具有编译作用域。

除非B是A的编译,否则B应该是具有“ (*)”作用域的P的依赖项(参见Dependency Scope表并阅读注释),因此应该在运行时可用。

但是,在P的运行时抛出了一个NoClassDefFoundError,这源于缺少B jars。

由于您是在Eclipse下运行该项目,因此已经为您设置了类路径,因此我将在此级别排除一个错误。这就给我们留下了可选依赖的例子。

PS:研究这类问题的一个非常有用的工具是dependency:tree

票数 26
EN

Stack Overflow用户

发布于 2010-05-27 01:23:02

如果这个依赖A有一个compile scope - sure,那么它应该已经被下载,并在项目的类路径中提供了更多的可用资源。但如果提供了作用域,情况就会是这样,因为提供的deps不会与应用程序打包在一起。

顺便说一句,你是如何运行这个项目的-没有以适当的方式运行可能也会导致这样的问题,这是一个非常好的猜测。例如,如果您使用的是maven exec plugin,maven会为您正确地设置类路径,否则,您应该自己设置它(或者使用assembly plugin构建一个带有依赖项的jar )。

票数 3
EN

Stack Overflow用户

发布于 2020-07-10 04:24:44

我正在写我自己的解决方案/情况,因为其他答案都没有解决我的问题。

在我的例子中,我的项目(ME)依赖于另一个项目(LIB),而这个项目又依赖于另一个项目(open-csv)。

然而,我注意到一个旧版本的open-csv已经是我的项目中的一个依赖项,这可能会迫使第二个库(LIB)使用这个旧版本的open-csv库,它不包含LIB使用的新类。

我通过更新我的主项目依赖列表中的open-csv版本解决了这个问题。

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

https://stackoverflow.com/questions/2915255

复制
相关文章

相似问题

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