有没有人有代码来检测类路径中的重复JAR?如何检测类路径中的重复JAR?
背景:当类路径中存在两个相同JAR版本时,可能会发生奇怪的事情。使用像Maven这样的工具时甚至会发生这种情况:更改依赖关系并首先构建WAR而不进行清理。由于target/webapp/WEB-INF/lib
未被清理,依赖关系将在那里两次。
有没有安全网?
有没有人有代码来检测类路径中的重复JAR?如何检测类路径中的重复JAR?
背景:当类路径中存在两个相同JAR版本时,可能会发生奇怪的事情。使用像Maven这样的工具时甚至会发生这种情况:更改依赖关系并首先构建WAR而不进行清理。由于target/webapp/WEB-INF/lib
未被清理,依赖关系将在那里两次。
有没有安全网?
JBoss Tattletale可能会帮助你。
这是一个免费的工具,它可以扫描项目使用的JAR文件并为您提供关于它们的报告。
当中它的特点是:
我认为最简单的方法是简单地首先垃圾目标目录。希望将所有.jar文件复制到其中并不会很费时。
否则,你将不得不以某种方式比较可观的文件(无论是直接的,通过计算校验和或类似的)。这听起来不太好听。
您可以编写一个简单的脚本,将每个jar文件的md5总和与其他jar文件进行比较,并沿途删除重复项。
两个版本意思是说md5的总和不匹配:-) – 2009-05-18 14:27:59
啊对不起,错过了你的问题的不同版本部分 – neesh 2009-05-18 14:32:48
System.getProperty("java.class.path")
,分割它,对它进行分类,用人眼看它 :-)。
它将不包括其他罐子你:-(里面体现派生类路径
或者使用http://www.jboss.org/tattletale作为海报的一个建议
有一个Maven插件来做到这一点:。maven-duplicate-finder-plugin
[编辑]如果你想这样做单元测试自己,用
getClass().getClassLoader().getResources("com/pany/package/Java.class")
如果返回多个URL
,则类路径上有重复项。
缺点是,这只适用于过去有冲突的情况。从积极的方面来说,它只是几行代码(或者当你编写一个辅助方法的时候是一行代码),它可以在你的构建服务器上运行。
验证这是否可以帮助您: http:// stackoverflow。com/questions/17555928/remove-duplicate-jars-in-a-directroy/20611435#20611435 – 2013-12-16 13:16:59