jdeps 是 jdk 自带的静态分析工具,用于分析 java 类或模块依赖关系,可输出 dot 格式数据,再借助 graphviz 渲染为 png/svg 等图像;它不直接生成图形,但支持通过 -f dot 选项导出依赖图描述文件,并配合 dot -tpng 等命令生成可视化图表。

jdeps 是 JDK 自带的静态分析工具,用于分析 Java 类或模块的依赖关系。它本身不直接生成图形(如 PNG/SVG),但可以输出文本、CSV 或 DOT 格式数据,再借助 Graphviz 等工具绘制成依赖关系图。
1. 用 jdeps 输出 DOT 格式依赖数据
DOT 是 Graphviz 支持的图描述语言,jdeps 可以导出为该格式:
- 分析单个 JAR 文件:
jdeps -f dot -o deps.dot myapp.jar - 分析目录下的 class 文件:
jdeps -f dot -o deps.dot ./classes/ - 分析模块(JDK 9+):
jdeps --multi-release 17 -f dot -o module-deps.dot --module-path mods/ -m my.module
生成的 deps.dot 是纯文本,内容类似:
"java.base" -> "java.logging";
"myapp.Main" -> "java.util.ArrayList";
2. 安装 Graphviz 并渲染成图片
DOT 文件需用 Graphviz 的 dot 命令转成图像:
- macOS:
brew install graphviz - Windows:从 graphviz.org 下载安装包,勾选“Add Graphviz to PATH”
- Linux(Ubuntu/Debian):
sudo apt install graphviz
生成 PNG 图片:
dot -Tpng deps.dot -o deps.png
也可输出 SVG、PDF 等:
dot -Tsvg deps.dot -o deps.svg
3. 实用技巧与注意事项
- 加 --quiet 减少冗余输出;加 --verbose=summary 查看高层依赖概览
- 用 --filter:none 显示所有依赖(包括 JDK 内部类),默认会过滤掉 sun.* 等非标准包
- 避免循环依赖:可结合 jdeps --check 验证模块间是否满足模块化约束
- 若图太复杂难以阅读,可用 --package com.example 限定只分析指定包及其依赖
4. 替代方案:可视化更友好的工具
如果想跳过命令行和 Graphviz,可考虑:
- JDepend(第三方 Java 工具):生成 HTML 报告 + 依赖矩阵,支持圈复杂度等指标
- IntelliJ IDEA:右键类 → Analyze Dependencies → 自动生成交互式依赖图(无需额外配置)
- Java Modularity Plugin for VS Code:提供轻量级依赖视图
这些工具更适合日常开发排查,而 jdeps + Graphviz 更适合自动化、CI 场景或深度依赖审计。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











