找出Eclipse项目中引用的jar的所有冲突包/类

时间:2011-07-25 13:42:04

标签: java eclipse jar project-management dependency-management

我目前正在处理一个巨大的Eclipse项目(不是我写的)。该项目不使用任何依赖管理工具。它引用了数百个JAR。

其中一些JAR包含相同的包(和类),但版本不同。目前,解决冲突的工作原理是手动(并随机!)在Order&Export中重新排序这些JAR(在项目属性中)。

这已经做了很长时间了,现在有很多不同供应商/版本/产品线的软件包/类。

重新排序会导致项目的某些部分在其他部分开始工作时失败,反之亦然。 奇怪的是,许多订单会导致构建错误,但只会导致运行时错误。

可以通过一个工具来解决这个问题,这会建议某些依赖JAR的自动顺序吗?

3 个答案:

答案 0 :(得分:1)

谷歌的JarAnalyzer,至少可以帮助确定如何建立依赖性。使用jar,你的eclipse项目也在生产。但是你不能真正自动化这个。想象一下你的一个eclipse项目需要bad-1.0.jar而另一个使用bad-1.2.jar。通常你不能用1.2替换1.0,因为你的项目不再编译。所以从长远来看,你必须删除过时的罐子,在所有子项目中切换到“通用版本”并修复编译器错误。当你这样做时,切换到常春藤或maven。

您的jar文件是否具有正确的名称,或者您是否有3个不同版本的bad.jar在文件系统中看起来相同但实际上是不同的版本?如果是这样,首先重命名所有相关的jar文件以包含版本号(通常可以在清单文件中找到eb)...我曾经做过你做过的事情并用JArAnalyzer写了我,有点groovy和一些shell脚本小生成项目所有常春藤文件的工具。

答案 1 :(得分:0)

你可以使用maven,常春藤清理混乱:)。那个春天不能正常运行试试这个:首先清理然后构建项目。

答案 2 :(得分:0)

  

“奇怪的是,许多订单不会导致构建错误,只会导致运行时错误   错误“。

这并不奇怪。正如您所写,类存在于不同的版本中,这不一定意味着编译错误,但意味着不同的行为和不同的子依赖。

避免使用“随机”或“自动订购”方法。我建议你使用Maven来处理你的依赖关系(为了准确地知道哪个库取决于哪个库)。您可能会发现,您所包含的许多库都不是必需的,并且依赖关系管理工具将“自动”处理依赖关系之间的所有依赖关系,但是您将为特定的库版本添加/强制排除。

更重要的是,它将帮助您简化代码并最终删除一行代码和40个依赖项...(依赖于侧框架滥用此类Spring或任何其他框架)。