我最近采用了用JSF编写的Web系统的支持和编程。代码有点混乱和冗余,是的,没有文档存在。
系统有超过40个jar库,由于旧版本和测试,大多数库都是冗余的。要删除一个jar,我必须检查它是否未在代码中导入,因此我在代码中搜索了jar导入路径(我正在使用IntelliJ IDE),确保它没有被使用,并将其删除。
但是,在编译代码之后,测试期间发生了许多运行时错误。我发现我删除了其他现有罐子使用的一些罐子。
问题是,如何在移除jar之前确定其他jar / java类没有使用它?
尽管jar已经编译了类,但已编译的类 do 具有所需库的导入路径。但我不能用IntelliJ搜索它们(不搜索jars文件)。
我现在唯一的办法就是每次移除一个罐子时测试系统,看看我是否可以崩溃!由于要测试的功能数量众多,这完全不是一种简单的方法。
我希望有一个工具可以提交一些java文件/ jar,它会显示它们之间的依赖关系。
答案 0 :(得分:21)
我知道JBoss项目中有一个名为JBoss 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)
还有来自Jini SDK的ClassDep。
http://java.sun.com/products/jini/2.0/doc/api/com/sun/jini/tool/ClassDep.html