The jdeps Command

名称

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,例如,来自publicprotected成员的签名的依赖关系,包括字段类型、方法参数类型、返回类型和已检查异常类型。
-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