Java可执行命令之jdeps 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法格式3.2 可选参数:jdeps -dotoutput < dir>3.3 可选参数:jdeps -s3.4 可选参数:jdeps -v3.5 可
Java中的jdeps
命令是一个用于分析类或jar
文件的工具,它能够帮助开发者识别出类之间的依赖关系。
jdeps
命令最早于Java 8版本中引入,旨在帮助开发者识别出Java类之间的依赖关系。其设计目的是为了帮助开发者在进行代码重构、迁移、与外部库集成等操作时,更好地了解库之间的依赖关系。
jdeps
命令通过分析Java字节码中的类、接口和包之间的引用关系,生成依赖关系报告。这些报告可以用来分析代码结构、识别潜在的问题,并帮助开发者进行代码重构和优化。
jdeps
命令具有以下特征:
Maven
、Gradle
等。命令的实现原理是通过解析字节码中的类、接口和包的引用关系,构建依赖关系图。它使用了Java的反射机制和类加载器来获取类之间的关联信息,并生成相应的依赖关系报告。
优点:
缺点:
jdeps
命令在分析大型项目时可能会消耗较多的时间和计算资源;jdeps
命令的基础语法如下:
jdeps [options] ...
其中,[options]
为可选参数,
为要分析的类文件或JAR文件。
将 jdeps
支持的各种可选参数汇总如下:
参数 | 说明 |
---|---|
-dotoutput | DOT 文件输出的目标目录 |
-s 或-summary | 仅输出被依赖对象概要 |
-v 或-verbose | 输出所有类级别被依赖对象。等同于 -verbose:class -filter:none |
-verbose:package | 默认情况下输出程序包级别被依赖对象,不包括同一程序包中的被依赖对象 |
-verbose:class | 默认情况下输出类级别被依赖对象,不包括同一程序包中的被依赖对象 |
-cp 或-classpath | 指定查找类文件的位置 |
-p 或-package | 查找与给定程序包名称匹配的被依赖对象(可多次指定) |
-e 或-regex | 查找与指定模式匹配的被依赖对象 (-p 和 -e 互相排斥) |
-f 或-filter | 筛选与指定模式匹配的被依赖对象。如果多次指定, 则将使用最后一个被依赖对象 |
-filter:package | 筛选位于同一程序包内的被依赖对象 (默认) |
-filter:arcHive | 筛选位于同一档案内的被依赖对象 |
-filter:none | 不使用 -filter:package 和 -filter:archive 筛选. 通过 -filter 选项指定的筛选仍旧适用 |
-include | 将分析限制为与模式匹配的类 此选项筛选要分析的类的列表。 它可以与向被依赖对象应用模式的 -p 和 -e 结合使用 |
-P 或-profile | 显示配置文件或包含程序包的文件 |
-apionly | 通过公共类 (包括字段类型, 方法参数类型, 返回类型, 受控异常错误类型等) 的公共和受保护成员的签名限制对 API (即被依赖对象)进行分析 |
-R 或-recursive | 递归遍历所有被依赖对象-R 选项表示 -filter:none 。如果指定了 -p ,-e , -f 选项, 则只分析匹配的被依赖对象 |
-jdkinternals | 在 JDK 内部 API 上查找类级别的被依赖对象。默认情况下, 它分析 -classpath 上的所有类和输入文件, 除非指定了 -include 选项。此选项不能与 -p , -e 和 -s 选项一起使用 |
-version | 版本信息 |
上边信息列出了jdeps
命令支持的所有可选参数,大家可以根据自己的需求参照表格选择所需操作参数。而下面主要介绍几个常用的可选参数:
-dotoutput
:DOT 文件输出的目标目录;-s
或 -summary
:仅输出被依赖对象概要;-v
或 -verbose
:输出所有类级别被依赖对象;-cp
或 -classpath
:指定查找类文件的位置。对于未介绍到的可选参数,大家可以使用 “jdeps -help
” 获取对应参数的用法及作用描述。
jdeps -dotoutput
用于分析 Java 应用程序或库中的依赖关系,并生成一组以 DOT 格式表示的依赖图。
-dotoutput
选项告诉 jdeps
将生成的依赖关系图输出为一组以 DOT(Graphviz DOT 格式)格式表示的文件,并保存在指定的目录
中。
每个生成的 DOT 文件将代表一个类,并描述它与其他类之间的依赖关系。这些 DOT 文件可以通过使用 Graphviz 工具转换为图像,从而可视化依赖关系图。
使用案例如下:
jdeps -dotoutput D: MyClass.class
该指令将 D:
指定为生成 DOT 文件的目标目录路径。执行命令后,jdeps
将分析指定目录中的 Java 类文件MyClass.class
,并生成以 DOT 格式表示的依赖关系图。生成的 .dot
文件如下所示。
文件生成之后可以使用 Graphviz 工具将 .dot
文件转换为图像格式(如 PNG、SVG)来可视化依赖关系图。例如,使用以下命令通过 Graphviz 将 DOT 文件转换为 PNG 图像:
dot -Tpng d:\MyClass.class.dot -o d:\output.png
d:\MyClass.class.dot
是实际的 .dot
文件路径,而 d:\output.png
指定了生成的图像文件名和路径。
注意在使用 dot
时,确保已正确安装和配置了相关的软件: Graphviz。
jdeps -s
用于分析 Java 应用程序或库的依赖关系并输出简化的摘要信息。
在终端或命令提示符中输入以下命令:
jdeps -s MyClass.class
使用 -s
选项后,jdeps
将输出以下摘要信息:
这些摘要信息可以帮助快速了解项目中的依赖关系,包括识别哪些文件可能会需要进行更改或更新。
jdeps -v
用于分析 Java 应用程序或库的依赖关系并输出详细的依赖信息。
在终端或命令提示符中输入以下命令:
jdeps -v MyClass.class
使用 -v
选项后,jdeps
将输出以下详细信息:
执行结果如下所示:
jdeps -cp
用于指定 jdeps 工具执行时要使用的类路径。
在终端或命令提示符中输入以下命令:
jdeps -cp
将
替换为要设置的类路径,并将
或
替换为目标 JAR 文件或类文件的路径。
Java 类往往相互依赖于其他类和库,为了正确分析这些依赖关系,需要提供适当的类路径。使用 -cp
选项,你可以指定包含所需类和库的 classpath(类路径),以确保 jdeps
可以正确地分析和检测到这些依赖关系。
通过指定正确的类路径,jdeps
将能够找到项目所需的所有类和库,并生成准确的依赖分析结果。
在使用jdeps命令时,需要注意以下事项:
jdeps
命令需要在Java开发环境中使用,并确保JAVA_HOME
环境变量已正确设置;jdeps
命令的分析结果应结合实际情况进行判断,不仅依赖关系报告,还需要开发者自己的判断和分析。jdeps
命令可以应用于以下场景:
jdeps
命令是Java开发中一种有用的工具,它能够帮助开发者识别类之间的依赖关系。通过分析依赖关系,开发者可以更好地理解项目结构、优化代码,解决潜在的问题。然而,使用jdeps
命令需要结合具体的项目情况和开发需求,正确理解和应用分析结果。
来源地址:https://blog.csdn.net/LVSONGTAO1225/article/details/131623320
--结束END--
本文标题: 【Java可执行命令】(十二)依赖分析工具jdeps:通过静态分析字节码并提取相关信息来实现依赖分析 ~
本文链接: https://www.lsjlt.com/news/371749.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-04-03
2024-04-03
2024-04-01
2024-01-21
2024-01-21
2024-01-21
2024-01-21
2023-12-23
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0