如何检查Jar文件之间的依赖关系?

时间:2009-04-24 16:48:51

标签: java jar dependencies redundancy

我最近采用了用JSF编写的Web系统的支持和编程。代码有点混乱和冗余,是的,​​没有文档存在。

系统有超过40个jar库,由于旧版本和测试,大多数库都是冗余的。要删除一个jar,我必须检查它是否未在代码中导入,因此我在代码中搜索了jar导入路径(我正在使用IntelliJ IDE),确保它没有被使用,并将其删除。

但是,在编译代码之后,测试期间发生了许多运行时错误。我发现我删除了其他现有罐子使用的一些罐子。

问题是,如何在移除jar之前确定其他jar / java类没有使用它?

尽管jar已经编译了类,但已编译的类 do 具有所需库的导入路径。但我不能用IntelliJ搜索它们(不搜索jars文件)。

我现在唯一的办法就是每次移除一个罐子时测试系统,看看我是否可以崩溃!由于要测试的功能数量众多,这完全不是一种简单的方法。

我希望有一个工具可以提交一些java文件/ jar,它会显示它们之间的依赖关系。

6 个答案:

答案 0 :(得分:21)

我知道JBoss项目中有一个名为JBoss TattleTale的工具,可能值得一看:

http://www.jboss.org/tattletale

答案 1 :(得分:6)

JDepend将为您分析任意数量的JAR,类文件等的依赖关系。将它报告给这些JAR的软件包关联应该是一个微不足道的额外步骤。

答案 2 :(得分:1)

为什么不将Maven用于您的项目?这将有助于您管理依赖关系。

答案 3 :(得分:1)

我也找到JarAnalyzer,但似乎不再维护了。

答案 4 :(得分:1)

嗯,现在是2013年,所以我不确定这个工具在2009年是否很棒。 刚使用它,发现它很有用: 类依赖性分析器(CDA)(V1.14) http://www.dependency-analyzer.org/ 这个工具有一个图形用户界面(Swing?)。 添加lib jar和Java类之后,它将在Class / Package / Container(jar)级别显示依赖项。 它也可以显示家属。 所以很容易找到依赖于罐子和依赖的罐子。

答案 5 :(得分:-1)