有沒有人有代碼來檢測類路徑中的重複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