名称
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模块路径 - 指定升级模块路径。
-
--systemjava-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