manpagez: man pages & more
man jdeps(1)
Home | html | info | man
jdeps(1)                         JDK Commands                         jdeps(1)


NAME

     jdeps - launch the Java class dependency analyzer


SYNOPSIS

     jdeps [options] path ...

     options
            Command-line options.  For detailed descriptions of the options
            that can be used, see

            o Possible Options

            o Module Dependence Analysis Options

            o Options to Filter Dependences

            o Options to Filter Classes to be Analyzed

     path   A pathname to the .class file, directory, or JAR file to analyze.


DESCRIPTION

     The jdeps command shows the package-level or class-level dependencies of
     Java class files.  The input class can be a path name to a .class file, a
     directory, a JAR file, or it can be a fully qualified class name to
     analyze all class files.  The options determine the output.  By default,
     the jdeps command writes the dependencies to the system output.  The
     command can generate the dependencies in DOT language (see the -dotoutput
     option).


POSSIBLE OPTIONS

     -? or -h or --help
            Prints the help message.

     -dotoutput dir or --dot-output dir
            Specifies the destination directory for DOT file output.  If this
            option is specified, then the jdepscommand generates one .dot file
            for each analyzed archive named archive-file-name.dot that lists
            the dependencies, and also a summary file named summary.dot that
            lists the dependencies among the archive files.

     -s or -summary
            Prints a dependency summary only.

     -v or -verbose
            Prints all class-level dependencies.  This is equivalent to

                   -verbose:class -filter:none

     -verbose:package
            Prints package-level dependencies excluding, by default,
            dependences within the same package.

     -verbose:class
            Prints class-level dependencies excluding, by default,
            dependencies within the same archive.

     -apionly or --api-only
            Restricts the analysis to APIs, for example, dependences from the
            signature of public and protected members of public classes
            including field type, method parameter types, returned type, and
            checked exception types.

     -jdkinternals or --jdk-internals
            Finds class-level dependences in the JDK internal APIs.  By
            default, this option analyzes all classes specified in the
            --classpath option and input files unless you specified the
            -include option.  You can't use this option with the -p, -e, and
            -s options.

            Warning: The JDK internal APIs are inaccessible.

     -cp path, -classpath path, or --class-path path
            Specifies where to find class files.

     --module-path module-path
            Specifies the module path.

     --upgrade-module-path module-path
            Specifies the upgrade module path.

     --system java-home
            Specifies an alternate system module path.

     --add-modules module-name[, module-name...]
            Adds modules to the root set for analysis.

     --multi-release version
            Specifies the version when processing multi-release JAR files.
            version should be an integer >=9 or base.

     -q or -quiet
            Doesn't show missing dependencies from -generate-module-info
            output.

     -version or --version
            Prints version information.


MODULE DEPENDENCE ANALYSIS OPTIONS

     -m module-name or --module module-name
            Specifies the root module for analysis.

     --generate-module-info dir
            Generates module-info.java under the specified directory.  The
            specified JAR files will be analyzed.  This option cannot be used
            with --dot-output or --class-path options.  Use the
            --generate-open-module option for open modules.

     --generate-open-module dir
            Generates module-info.java for the specified JAR files under the
            specified directory as open modules.  This option cannot be used
            with the --dot-output or --class-path options.

     --check module-name [, module-name...]
            Analyzes the dependence of the specified modules.  It prints the
            module descriptor, the resulting module dependences after analysis
            and the graph after transition reduction.  It also identifies any
            unused qualified exports.

     --list-deps
            Lists the module dependences and also the package names of JDK
            internal APIs (if referenced).  This option transitively analyzes
            libraries on class path and module path if referenced.  Use
            --no-recursive option for non-transitive dependency analysis.

     --list-reduced-deps
            Same as --list-deps without listing the implied reads edges from
            the module graph.  If module M1 reads M2, and M2 requires
            transitive on M3, then M1 reading M3 is implied and is not shown
            in the graph.

     --print-module-deps
            Same as --list-reduced-deps with printing a comma-separated list
            of module dependences.  The output can be used by jlink
            --add-modules to create a custom image that contains those modules
            and their transitive dependences.

     --ignore-missing-deps
            Ignore missing dependences.


OPTIONS TO FILTER DEPENDENCES

     -p pkg_name, -package pkg_name, or --package pkg_name
            Finds dependences matching the specified package name.  You can
            specify this option multiple times for different packages.  The -p
            and -e options are mutually exclusive.

     -e regex, -regex regex, or --regex regex
            Finds dependences matching the specified pattern.  The -p and -e
            options are mutually exclusive.

     --require module-name
            Finds dependences matching the given module name (may be given
            multiple times).  The --package, --regex, and --require options
            are mutually exclusive.

     -f regex or -filter regex
            Filters dependences matching the given pattern.  If give multiple
            times, the last one will be selected.

     -filter:package
            Filters dependences within the same package.  This is the default.

     -filter:archive
            Filters dependences within the same archive.

     -filter:module
            Filters dependences within the same module.

     -filter:none
            No -filter:package and -filter:archive filtering.  Filtering
            specified via the -filter option still applies.

     --missing-deps
            Finds missing dependences.  This option cannot be used with -p, -e
            and -s options.


OPTIONS TO FILTER CLASSES TO BE ANALYZED

     -include regex
            Restricts analysis to the classes matching pattern.  This option
            filters the list of classes to be analyzed.  It can be used
            together with -p and -e, which apply the pattern to the
            dependencies.

     -R or --recursive
            Recursively traverses all run-time dependences.  The -R option
            implies -filter:none.  If -p, -e, or -f options are specified,
            only the matching dependences are analyzed.

     --no-recursive
            Do not recursively traverse dependences.

     -I or --inverse
            Analyzes the dependences per other given options and then finds
            all artifacts that directly and indirectly depend on the matching
            nodes.  This is equivalent to the inverse of the compile-time view
            analysis and the print dependency summary.  This option must be
            used with the --require, --package, or --regex options.

     --compile-time
            Analyzes the compile-time view of transitive dependencies, such as
            the compile-time view of the -R option.  Analyzes the dependences
            per other specified options.  If a dependency is found from a
            directory, a JAR file or a module, all classes in that containing
            archive are analyzed.


EXAMPLE OF ANALYZING DEPENDENCIES

     The following example demonstrates analyzing the dependencies of the
     Notepad.jar file.

     Linux and 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


EXAMPLE USING THE --INVERSE OPTION

             $ jdeps --inverse --require java.xml.bind
            Inverse transitive dependences on [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

JDK 27.0.1                           2026                             jdeps(1)

openjdk27-zulu 27.30.107 - Generated Tue Oct 27 08:14:23 CDT 2026
© manpagez.com 2000-2026
Individual documents may contain additional copyright information.