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

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

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

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

问题是,如何在移除jar之前确保它没有被另一个jar / java类使用?

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

我现在做的唯一方法是每次移除一个jar子时测试系统,看看我是否可以崩溃! 由于要测试的function数量巨大,这完全不是一种简单的方法。

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

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

http://www.jboss.org/tattletale

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

你为什么不在你的项目中使用Maven? 这将帮助您管理依赖项。

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

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