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

jav*_*eed 6 java eclipse project-management jar dependency-management

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

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

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

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

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

Ang*_*ere 1

Google for JarAnalyzer,这至少有助于弄清楚依赖关系是如何建立的。使用 jars,您的 eclipse 项目也在生成。然而你不能真正自动化这一点。想象一下您的 Eclipse 项目之一需要 bad-1.0.jar,而另一个项目则使用 bad-1.2.jar。很多时候,您无法将 1.0 替换为 1.2,因为您的项目将无法再编译。因此,从长远来看,您必须删除过时的 jar,在所有子项目中切换到“通用版本”并修复编译器错误。当你这样做的时候,切换到ivy或maven。

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