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

30

我最近接手了一个使用JSF编写的Web系统的支持和编程。代码有些凌乱和冗余,并且没有文档。

这个系统有超过40个JAR库,其中大部分由于旧版本和测试而是冗余的。要删除其中一个JAR,我必须检查它在代码中是否被导入,因此我使用IntelliJ IDE搜索了JAR导入路径,确保它未被使用,然后将其删除。

然而,在编译代码后,在测试期间发生了许多运行时错误。我想出了我删除了一些被其他现有JAR使用的JAR的问题。

问题是,如何在删除JAR之前确保它不被另一个JAR / Java类使用?

尽管JAR具有已编译的类,但已编译的类确实具有所需库的导入路径。但我无法使用IntelliJ搜索它们(不会搜索JAR文件内部)。

目前我唯一的方法是每次删除JAR时都测试系统并查看是否会崩溃!由于需要测试的功能数量巨大,这绝对不是一种简单的方法。

我希望有一种工具可以提交一些Java文件/ JAR,并显示它们之间的依赖关系。

6个回答

22

1
这个工具还很新,但提供了一些不错的信息。它甚至可以显示jar文件中类之间的依赖关系。可惜它不能与maven一起使用。 - Peter D
正是我所需要的!我测试了它,它为我提供了关于jar依赖项和更多内容的很酷的报告。谢谢! - Saleh Al-Zaid
很高兴能够帮忙。我认为它使用GraphViz来可视化图形,有一些方法可以微调它,使其看起来更好。 - Uri

7

JDepend可以为您分析任意数量的JAR、类文件等的依赖关系。与它报告的包相关联的JAR应该是一个微不足道的额外步骤。


我也测试了JDepend,但是它在查看依赖关系方面比jboss tattletale复杂得多。但是它有一个优点,它不仅显示jar之间的依赖关系,还显示类之间的依赖关系。 - Saleh Al-Zaid

2

我还发现了JarAnalyzer,但似乎已经没有维护了。


1

现在是2013年,我不确定这个工具在2009年是否很出色。我刚刚使用它并发现它非常有用: 类依赖分析器 (CDA) (V1.14) http://www.dependency-analyzer.org/。 该工具有一个图形界面(Swing?)。在添加库jars和Java类之后,它将显示类/包/容器(jar)级别的依赖关系,还可以显示依赖项。因此,很容易找到依赖于哪些jar和被依赖的jar。


1

为什么不在你的项目中使用Maven呢?这将有助于您更好地管理依赖关系。


Maven站点插件将生成包括依赖项在内的报告。 - Chris Nava
1
NetBeans 6.7 中的 Maven 插件包括一个用于 Jars 的图形依赖项查看器:http://wiki.netbeans.org/NewAndNoteworthyMilestone3NB67 - mjn


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接