【发布时间】:2013-11-08 16:17:55
【问题描述】:
在构建具有许多依赖项的 maven 项目时,其中一些依赖项依赖于同一个库但使用不同的版本,这会在运行应用程序时导致错误。
例如,如果我添加两个不同的项目依赖项,A 和 B,它们都依赖于 apache commons http 客户端,但每个都依赖于不同的版本,一旦类加载器加载 A 的 apache commons http 客户端类,B 将尝试使用它们,因为它们已经被类加载器加载了。
但是 B 的字节码取决于加载的类的不同版本,在运行应用程序时会导致多个问题。一个常见的是methodnotfound异常(因为A版本的http客户端不再使用特定的方法)。
在构建时避免此类冲突的一般策略是什么?是否必须手动检查依赖关系树才能确定哪些公共库相互冲突?
【问题讨论】:
标签: java maven dependencies conflict