jdeps 是 jdk 自带的静态依赖分析工具,通过解析字节码提取 import、方法调用等信息,分析类/jar/模块间依赖,支持 -verbose:class、--jdk-internals 等选项识别非法 api 调用并生成 dot 或 csv 输出。

jdeps 是 JDK 自带的静态依赖分析工具,用于分析 Java 类、JAR 包或模块之间的依赖关系。它不运行代码,而是通过解析字节码(.class 文件)提取 import、方法调用、字段访问、反射使用等信息,帮助你了解项目对哪些内部 API、第三方库或 JDK 模块有依赖。
基础用法:分析单个 JAR 或类目录
最常用场景是检查打包后的 JAR 文件或编译输出目录(如 target/classes):
- 分析 JAR:
jdeps myapp.jar - 分析 class 目录:
jdeps target/classes - 递归分析子目录(含嵌套 JAR):
jdeps -R target/lib/*.jar target/classes
默认输出只显示顶层依赖(例如 java.base、java.desktop),不展开内部细节。若想看具体类之间的引用,需加 -verbose:class 或 -verbose:all。
查看详细依赖:按类/包/模块粒度筛选
用不同 -verbose 级别控制输出精度:
-
jdeps -verbose:class myapp.jar→ 显示每个类依赖了哪些其他类(如com.example.Service→java.util.ArrayList) -
jdeps -verbose:package myapp.jar→ 按包聚合,显示com.example依赖了org.apache.commons.lang3 -
jdeps --module-path mods/ -s myapp.jar→ 分析模块化项目,只显示模块级依赖(适合 JPMS 项目)
注意:-s(summary)可让输出更简洁,配合 -verbose 仍保留结构清晰。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
识别非法依赖与 JDK 内部 API
升级 JDK(尤其是 JDK 9+)时,常因调用 sun.*、com.sun.* 等非标准 API 导致运行失败。jdeps 可快速定位:
-
jdeps --jdk-internals myapp.jar→ 列出所有对 JDK 内部 API 的调用,并标注推荐替代方案(如建议改用java.nio.file替代sun.nio.fs) -
jdeps --multi-release 17 myapp.jar→ 检查多版本 JAR 中各版本目录的依赖是否合规(适用于兼容老 JDK 的新构建)
该功能对迁移到 JDK 11/17/21 特别实用,避免上线后 NoClassDefFoundError 或 IllegalAccessError。
导出结构化结果:生成 CSV 或依赖图
便于集成 CI 或进一步分析:
- 生成 CSV 依赖列表:
jdeps -summary -f csv myapp.jar > deps.csv - 输出 DOT 格式供 Graphviz 绘图:
jdeps -dotdir ./dot myapp.jar→ 生成.dot文件,再用dot -Tpng deps.dot -o deps.png可视化 - 过滤特定依赖:
jdeps -filter:jdk myapp.jar(只显示 JDK 依赖)、-filter:package "com.google.*"(匹配包名)
搭配 --class-path 可指定额外依赖路径,确保第三方库符号能被正确解析(否则可能显示为 unknown)。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










