如何可视化jar(而不是插件)依赖项?

我目前正在重构一个大型Java应用程序。 我将其中一个中心(Eclipse)项目拆分为大约30个单独的“组件”,但它们仍然是相互依赖的。 为了更好地了解什么取决于我正在寻找什么方式来绘制编译时依赖性。

到目前为止我找到的所有工具都能够绘制包或类依赖关系或Eclipse插件之间的依赖关系,但是我想到的只是看看每个Eclipse项目的类路径设置,并从中构建一个粗粒度图。

之后我会更深入,但是现在这只是意味着我无法看到所有树木的森林。

Structure101能够在Jboss 5中可视化类和方法JAR级别的依赖关系。

请参阅下面的屏幕截图或查看更大。

替代文字

看看JBoss Tattletale 。 它可能没有你要求的所有,但它值得检查。 它仍然相对较新。

该工具将为您提供可以帮助您的报告

  • 识别JAR文件之间的依赖关系
  • 从类路径中查找缺少的类
  • 如果一个类位于多个JAR文件中,请发现
  • 如果相同的JAR文件位于多个位置,请发现
  • 列出每个JAR文件所需和提供的内容
  • validation类的SerialVersionUID
  • 查找具有不同版本号的类似JAR文件
  • 查找没有版本号的JAR文件
  • 在JAR文件中找到一个类
  • 获取项目的OSGi状态
  • 删除黑名单的API使用情况

我认为可以做你想做的一个工具是理解 。 这不是免费的,但您可以在投入任何资金之前下载免费试用版。

看看Dependency Finder

我不确定是否有(n个Eclipse)类路径分析工具。
可能是马特克提到的理解可以提供帮助。

我在这里引用的所有静态代码分析工具中最接近的将是JarAnalyzer (尽管没有图表),能够在jar子中检测“ 物理依赖性 ”。

听起来像是Degraph的一个用例。 它分析了一堆类文件和jar,并可视化依赖关系。

什么使它适合您的用例(我认为)是可以定义要捆绑在一起的任意类组。 因此,您可以重现jar结构,查看依赖项,尤其是循环依赖项。

您可以展开组以查看其包含的类或折叠它们以简化视图。

为了快速了解可能的情况,请查看Degraph示例 。

Log4j的示例:

Log4J依赖项

JDep已包含在JDK中,并显示JAR依赖项。 例如:

jdeps -R -cp "my\jar\dir\*;my\other\jar\dir\*" my\classes\dir 

查看类依赖性分析器(CDA): http : //www.dependency-analyzer.org/

我发现它对于整理jar子非常有用。

为了记录(以及为了改进这个知识库),我发现Shrimp非常有帮助: http : //www.thechiselgroup.org/shrimp

虾可视化

此外,为了便于依赖检查,Byecycle值得一试,但似乎不再更新: Byecycle

这两个工具还提供Eclipse集成。