Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 查找Eclipse项目中引用的JAR的所有冲突包/类_Java_Eclipse_Jar_Project Management_Dependency Management - Fatal编程技术网

Java 查找Eclipse项目中引用的JAR的所有冲突包/类

Java 查找Eclipse项目中引用的JAR的所有冲突包/类,java,eclipse,jar,project-management,dependency-management,Java,Eclipse,Jar,Project Management,Dependency Management,我目前正在处理一个巨大的Eclipse项目(不是我写的)。此项目不使用任何依赖项管理工具。它引用了数百个罐子 其中一些jar包含相同的包(和类),但版本不同。目前,解决冲突的方法是手动(和随机!)在Order&Export(在项目属性中)中对这些JAR重新排序 这已经做了很长一段时间了,现在有很多包/类具有不同的供应商/版本/产品线 重新排序会导致项目的某些部分在其他部分开始工作时失败,反之亦然。 奇怪的是,许多命令不会导致生成错误,而只会导致运行时错误 是否可以通过一个工具来解决这个问题,该工

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

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

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

重新排序会导致项目的某些部分在其他部分开始工作时失败,反之亦然。 奇怪的是,许多命令不会导致生成错误,而只会导致运行时错误


是否可以通过一个工具来解决这个问题,该工具会建议相关罐子的某些自动顺序?

您可以使用maven、ivy来清理这个问题:)。而spring不能正常工作,请尝试以下方法:先清理,然后构建项目

“奇怪的是,很多命令不会导致生成错误,只会导致运行时错误 错误。”

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

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


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

Google for JarAnalyzer,这至少有助于了解依赖项是如何建立的。使用JAR,您的eclipse项目也正在生成。但是,您无法真正实现自动化。假设您的一个eclipse项目需要bad-1.0.jar,另一个项目使用bad-1.2.jar。通常情况下,您无法用1.2版本替换1.0版本,因为您的项目将不再编译。因此,从长远来看,您必须删除过时的JAR,在所有子项目中切换到“通用版本”,并修复编译器错误。当你这样做的时候,切换到常春藤或梅文


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

听起来你应该开始使用MavenI,这不仅仅是“开始”使用Maven,这将是一个巨大的迁移过程。是的,但在情况变得更糟之前,现在做这项任务不是更好吗,点输出是复杂的。XML输出甚至不适合人类;)是的,这就是为什么我查看了源代码,并更改了JarAnalyzer的输出,我把它邮寄给了作者,但他没有合并它。如果你需要它,我相信我还在某处,请给我发一封电子邮件给安吉洛。schneider@oomentor.de…Maven没用。对于不同的版本,许多产品具有不同的groupId/artifactId。