名称
jdeps - 启动Java类依赖分析器
概要
jdeps
[选项] 路径 ...
- 选项
-
命令行选项。有关可用选项的详细描述,请参见
- 路径
-
要分析的
.class
文件、目录或JAR文件的路径。
描述
jdeps
命令显示Java类文件的包级或类级依赖关系。输入类可以是指向.class
文件、目录、JAR文件的路径,也可以是要分析所有类文件的完全限定类名。选项确定输出。默认情况下,jdeps
命令将依赖关系写入系统输出。该命令可以生成DOT语言的依赖关系(请参阅-dotoutput
选项)。
可能的选项
-
-?
或-h
或--help
- 打印帮助消息。
-
-dotoutput
目录 或--dot-output
目录 -
指定DOT文件输出的目标目录。如果指定了此选项,则
jdeps
命令为每个分析的存档生成一个名为archive-file-name.dot
的.dot
文件,列出依赖关系,还生成一个名为summary.dot
的摘要文件,列出存档文件之间的依赖关系。 -
-s
或-summary
- 仅打印依赖关系摘要。
-
-v
或-verbose
-
打印所有类级别的依赖关系。这等效于
-verbose:class -filter:none
-
-verbose:package
- 打印包级别的依赖关系,默认情况下排除同一包内的依赖关系。
-
-verbose:class
- 打印类级别的依赖关系,默认情况下排除同一存档内的依赖关系。
-
-apionly
或--api-only
-
限制分析为API,例如,来自
public
和protected
成员的签名的依赖关系,包括字段类型、方法参数类型、返回类型和已检查异常类型。 -
-jdkinternals
或--jdk-internals
-
查找JDK内部API中的类级别依赖关系。默认情况下,此选项分析
--classpath
选项和输入文件中指定的所有类,除非指定了-include
选项。您不能将此选项与-p
、-e
和-s
选项一起使用。警告:JDK内部API是不可访问的。
-
-cp
路径、-classpath
路径或--class-path
路径 - 指定类文件的位置。
-
--module-path
模块路径 - 指定模块路径。
-
--upgrade-module-path
模块路径 - 指定升级模块路径。
-
--system
java-home - 指定替代的系统模块路径。
-
--add-modules
模块名[,
模块名...] - 将模块添加到分析的根集。
-
--multi-release
版本 - 指定处理多版本JAR文件时的版本。版本应为大于等于9的整数或基本版本。
-
-q
或-quiet
-
不显示
-generate-module-info
输出中缺少的依赖关系。 -
-version
或--version
- 打印版本信息。
模块依赖分析选项
-
-m
模块名或--module
模块名 - 指定分析的根模块。
-
--generate-module-info
目录 -
在指定目录下生成
module-info.java
。将分析指定的JAR文件。此选项不能与--dot-output
或--class-path
选项一起使用。使用--generate-open-module
选项生成开放模块。 -
--generate-open-module
目录 -
在指定目录下为指定的JAR文件生成开放模块的
module-info.java
。此选项不能与--dot-output
或--class-path
选项一起使用。 -
--check
模块名[,
模块名...] - 分析指定模块的依赖关系。它打印模块描述符,在分析后的结果模块依赖关系和转换缩减后的图形。还会识别任何未使用的限定导出。
-
--list-deps
-
列出模块依赖关系,还列出JDK内部API的包名称(如果有引用)。如果有引用,此选项会在类路径和模块路径上进行传递分析库。对于非传递依赖分析,请使用
--no-recursive
选项。 -
--list-reduced-deps
-
与
--list-deps
相同,不列出模块图中的隐含读取边缘。如果模块M1读取M2,并且M2需要M3的传递性,则暗示M1读取M3,并且不会显示在图中。 -
--print-module-deps
-
与
--list-reduced-deps
相同,打印模块依赖的逗号分隔列表。输出可供jlink --add-modules
使用,以创建包含这些模块及其传递依赖关系的自定义映像。 -
--ignore-missing-deps
- 忽略缺少的依赖关系。
过滤依赖的选项
-
-p
包名、-package
包名或--package
包名 -
查找与指定包名匹配的依赖关系。您可以多次为不同包指定此选项。
-p
和-e
选项是互斥的。 -
-e
正则表达式、-regex
正则表达式或--regex
正则表达式 -
查找与指定模式匹配的依赖关系。
-p
和-e
选项是互斥的。 -
--require
模块名 -
查找与给定模块名匹配的依赖关系(可以多次给出)。
--package
、--regex
和--require
选项是互斥的。 -
-f
正则表达式或-filter
正则表达式 - 过滤与给定模式匹配的依赖关系。如果多次给出,将选择最后一个。
-
-filter:package
- 过滤同一包内的依赖关系。这是默认设置。
-
-filter:archive
- 过滤同一存档内的依赖关系。
-
-filter:module
- 过滤同一模块内的依赖关系。
-
-filter:none
-
不进行
-filter:package
和-filter:archive
过滤。仍然适用通过-filter
选项指定的过滤。 -
--missing-deps
-
查找缺少的依赖关系。此选项不能与
-p
、-e
和-s
选项一起使用。
过滤要分析的类的选项
-
-include
正则表达式 -
限制分析匹配模式的类。此选项过滤要分析的类列表。它可以与应用于依赖关系的
-p
和-e
一起使用。 -
-P
或-profile
- 显示包含包的配置文件。此选项已被弃用,可能会在将来的版本中删除。
-
-R
或--recursive
-
递归遍历所有运行时依赖关系。
-R
选项意味着-filter:none
。如果指定了-p
、-e
或-f
选项,则仅分析匹配的依赖关系。 -
--no-recursive
- 不递归遍历依赖关系。
-
-I
或--inverse
-
根据其他给定选项分析依赖关系,然后找到直接和间接依赖于匹配节点的所有构件。这相当于编译时视图分析的反向和打印依赖关系摘要。此选项必须与
--require
、--package
或--regex
选项一起使用。 -
--compile-time
-
分析传递依赖的编译时视图,例如
-R
选项的编译时视图。根据其他指定的选项分析依赖关系。如果从目录、JAR文件或模块找到依赖关系,则会分析该包含存档中的所有类。
分析依赖关系示例
以下示例演示了分析Notepad.jar
文件的依赖关系。
Linux和macOS:
$ jdeps demo/jfc/Notepad/Notepad.jar
Notepad.jar -> java.base
Notepad.jar -> java.desktop
Notepad.jar -> java.logging
<unnamed> (Notepad.jar)
-> java.awt
-> java.awt.event
-> java.beans
-> java.io
-> java.lang
-> java.net
-> java.util
-> java.util.logging
-> javax.swing
-> javax.swing.border
-> javax.swing.event
-> javax.swing.text
-> javax.swing.tree
-> javax.swing.undo
Windows:
C:\Java\jdk1.9.0>jdeps demo\jfc\Notepad\Notepad.jar
Notepad.jar -> java.base
Notepad.jar -> java.desktop
Notepad.jar -> java.logging
<unnamed> (Notepad.jar)
-> java.awt
-> java.awt.event
-> java.beans
-> java.io
-> java.lang
-> java.net
-> java.util
-> java.util.logging
-> javax.swing
-> javax.swing.border
-> javax.swing.event
-> javax.swing.text
-> javax.swing.tree
-> javax.swing.undo
使用--inverse选项的示例
$ jdeps --inverse --require java.xml.bind
反向传递依赖关系 [java.xml.bind]
java.xml.bind <- java.se.ee
java.xml.bind <- jdk.xml.ws
java.xml.bind <- java.xml.ws <- java.se.ee
java.xml.bind <- java.xml.ws <- jdk.xml.ws
java.xml.bind <- jdk.xml.bind <- jdk.xml.ws