2008-10-29 31 views

回答

41

ClassPathHelper是一個好的開始。

它自動識別孤兒罐等等。

唯一的限制是未在類中定義的依賴關係,例如,在依賴注入框架配置文件中。

您也有其他選擇/補,如:

  • workingfrog "Relief",它依賴於通過檢查空間的形狀,大小或相對位置來處理真實物體的能力,它提供了一個「物理」查看Java包,類型和字段及其關係,使它們更易於處理。
  • Unnecessary Code Detector:一個eclipse PlugIn工具來查找不必要的(死的)公共java代碼。
+0

有不同的答案類似的問題http://stackoverflow.com/questions/1012298/how-can-i-identify-unnecessary-jar-included-in-my-project – 2013-07-26 04:44:48

+0

@VonC提到的第一個鏈接似乎已被移動/破壞 – 2013-10-24 06:52:26

+0

@manocha_ak是的,關於workingfrog的Relief項目已經不復存在。我已經恢復了該網站的web.archive.org鏈接。 – VonC 2013-10-24 07:37:19

26

UCDetector沒有幫助這個:它不會對JAR文件的工作。 和classpathHelper,我無法找到一個簡單的方法列出孤兒JAR(順便說一句,如果有人有這個教程,我很感興趣)。

因此,如果您也像我一樣使用Maven,我會發現this great Maven plugin,我想與您分享此解決方案。 只需鍵入:

mvn dependency:analyze 

,你會立即得到你的依賴未使用的JAR文件的列表。 非常方便!

0

我知道這是一箇舊的,但如果有人絆倒這一點,Eclipse本身就是這樣做的。

導航到項目屬性 - > Java的代碼風格 - >清理 選擇Eclipse [內置],它具有以下功能:使用聲明類型

  • 更改非靜態訪問靜態成員
  • 更改間接訪問靜態成員直接訪問 (通過亞型訪問)
  • 刪除未使用的進口
  • 添加缺少「@Override」註釋
  • 添加缺少 '@Override' 註釋接口的實現 方法
  • 添加缺少 '@Deprecated' 註釋
  • 刪除不必要的強制類型轉換
  • 刪除不必要的 '$ NON-NLS $' 標籤
5

我發現了一個非常快速和有趣的工具來歸檔這個目標:

http://tattletale.jboss.org/

只需要解壓縮程序並運行:

java -Xmx512m -jar tattletale.jar ~/myjavaproject/mydistribution output 

這將產生不同的點非常令人印象深刻的報告(從他們的網站文本):

  • JAR文件之間確定的依賴
  • 查找失蹤班類路徑
  • 如果某個類/軟件包位於多個JAR文件中,則爲現貨
  • 如果同一個JAR文件位於多個位置,則爲現貨
  • 以及每條JAR文件需要一個列表,並提供
  • 驗證類的serialVersionUID的
  • 查找有不同的版本號
  • 查找JAR文件沒有版本號
  • 尋找類似的JAR文件未使用的JAR檔案
  • 識別密封/簽名的JAR檔案
  • 找到一類在JAR文件
  • 獲取項目的OSGi的狀態
  • 刪除黑名單API使用
  • ,併爲您的.WAR和相同的報告.EAR歸檔