< prev index next >

src/jdk.jdeps/share/man/jdeps.1

Print this page

        

*** 1,7 **** ! '\" t ! .\" Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. .\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. .\" .\" This code is free software; you can redistribute it and/or modify it .\" under the terms of the GNU General Public License version 2 only, as .\" published by the Free Software Foundation. --- 1,6 ---- ! .\" Copyright (c) 1994, 2019, Oracle and/or its affiliates. All rights reserved. .\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. .\" .\" This code is free software; you can redistribute it and/or modify it .\" under the terms of the GNU General Public License version 2 only, as .\" published by the Free Software Foundation.
*** 18,537 **** .\" .\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA .\" or visit www.oracle.com if you need additional information or have any .\" questions. .\" ! .\" Arch: generic ! .\" Software: JDK 8 ! .\" Date: 21 November 2013 ! .\" SectDesc: Basic Tools ! .\" Title: jdeps.1 .\" ! .if n .pl 99999 ! .TH jdeps 1 "21 November 2013" "JDK 8" "Basic Tools" ! .\" ----------------------------------------------------------------- ! .\" * Define some portability stuff ! .\" ----------------------------------------------------------------- ! .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! .\" http://bugs.debian.org/507673 ! .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html ! .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ! .ie \n(.g .ds Aq \(aq ! .el .ds Aq ' ! .\" ----------------------------------------------------------------- ! .\" * set default formatting ! .\" ----------------------------------------------------------------- ! .\" disable hyphenation ! .nh ! .\" disable justification (adjust text to left margin only) ! .ad l ! .\" ----------------------------------------------------------------- ! .\" * MAIN CONTENT STARTS HERE * ! .\" ----------------------------------------------------------------- ! .SH NAME ! jdeps \- Java class dependency analyzer\&. .SH SYNOPSIS ! .sp ! .nf ! ! \fBjdeps\fR [\fIoptions\fR] \fIclasses\fR \&.\&.\&. ! .fi ! .sp .TP ! \fIoptions\fR ! Command-line options\&. See Options\&. .TP ! \fIclasses\fR ! Name of the classes to analyze\&. You can specify a class that can be found in the class path, by its file name, a directory, or a JAR file\&. .SH DESCRIPTION ! The \fI\fR\f3jdeps\fR command shows the package-level or class-level dependencies of Java class files\&. The input class can be a path name to a \f3\&.class\fR 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, \f3jdeps\fR outputs the dependencies to the system output\&. It can generate the dependencies in DOT language (see the \f3-dotoutput\fR option)\&. ! .SH OPTIONS .TP ! -dotoutput <\fIdir\fR> ! .br ! Destination directory for DOT file output\&. If specified, \f3jdeps\fR will generate one dot file per each analyzed archive named <\fIarchive-file-name\fR>\&.dot listing the dependencies, and also a summary file named summary\&.dot listing the dependencies among the archives\&. ! .TP ! -s, -summary ! .br ! Prints dependency summary only\&. ! .TP ! -v, -verbose ! .br ! Prints all class-level dependencies\&. ! .TP ! -verbose:package ! .br ! Prints package-level dependencies excluding dependencies within the same archive\&. ! .TP ! -verbose:class ! .br ! Prints class-level dependencies excluding dependencies within the same archive\&. ! .TP ! -cp <\fIpath\fR>, -classpath <\fIpath\fR> ! .br ! Specifies where to find class files\&. ! ! See also Setting the Class Path\&. ! .TP ! -p <\fIpkg name\fR>, -package <\fIpkg name\fR> ! .br ! Finds dependencies in the specified package\&. You can specify this option multiple times for different packages\&. The \f3-p\fR and \f3-e\fR options are mutually exclusive\&. ! .TP ! -e <\fIregex\fR>, -regex <\fIregex\fR> ! .br ! Finds dependencies in packages matching the specified regular expression pattern\&. The \f3-p\fR and \f3-e\fR options are mutually exclusive\&. ! .TP ! -include <\fIregex\fR> ! .br ! Restricts analysis to classes matching pattern\&. This option filters the list of classes to be analyzed\&. It can be used together with \f3-p\fR and \f3-e\fR which apply pattern to the dependencies\&. ! .TP ! -jdkinternals ! .br ! Finds class-level dependences in JDK internal APIs\&. By default, it analyzes all classes specified in the \f3-classpath\fR option and in input files unless you specified the \f3-include\fR option\&. You cannot use this option with the \f3-p\fR, \f3-e\fR, and \f3-s\fR options\&. ! ! \fIWarning\fR: JDK internal APIs may not be accessible in upcoming releases\&. ! .TP ! -P, -profile ! .br ! Shows profile or the file containing a package\&. ! .TP ! -apionly ! .br ! Restricts analysis to APIs, for example, dependences from the signature of \f3public\fR and \f3protected\fR members of public classes including field type, method parameter types, returned type, and checked exception types\&. ! .TP ! -R, -recursive ! .br ! Recursively traverses all dependencies\&. ! .TP ! -version ! .br ! Prints version information\&. ! .TP ! -h, -?, -help ! .br ! Prints help message for \f3jdeps\fR\&. ! .SH EXAMPLES ! Analyzing the dependencies of Notepad\&.jar\&. ! .sp ! .nf ! \f3$ jdeps demo/jfc/Notepad/Notepad\&.jar\fP ! .fi ! .nf ! \f3\fP ! .fi ! .nf ! \f3demo/jfc/Notepad/Notepad\&.jar \-> /usr/java/jre/lib/rt\&.jar\fP ! .fi ! .nf ! \f3 <unnamed> (Notepad\&.jar)\fP ! .fi ! .nf ! \f3 \-> java\&.awt \fP ! .fi ! .nf ! \f3 \-> java\&.awt\&.event \fP ! .fi ! .nf ! \f3 \-> java\&.beans \fP ! .fi ! .nf ! \f3 \-> java\&.io \fP ! .fi ! .nf ! \f3 \-> java\&.lang \fP ! .fi ! .nf ! \f3 \-> java\&.net \fP ! .fi ! .nf ! \f3 \-> java\&.util \fP ! .fi ! .nf ! \f3 \-> java\&.util\&.logging \fP ! .fi ! .nf ! \f3 \-> javax\&.swing \fP ! .fi ! .nf ! \f3 \-> javax\&.swing\&.border \fP ! .fi ! .nf ! \f3 \-> javax\&.swing\&.event \fP ! .fi ! .nf ! \f3 \-> javax\&.swing\&.text \fP ! .fi ! .nf ! \f3 \-> javax\&.swing\&.tree \fP ! .fi ! .nf ! \f3 \-> javax\&.swing\&.undo \fP ! .fi ! .nf ! \f3\fP ! .fi ! .sp ! Use -P or -profile option to show on which profile that Notepad depends\&. ! .sp ! .nf ! \f3$ jdeps \-profile demo/jfc/Notepad/Notepad\&.jar \fP ! .fi ! .nf ! \f3demo/jfc/Notepad/Notepad\&.jar \-> /usr/java/jre/lib/rt\&.jar (Full JRE)\fP ! .fi ! .nf ! \f3 <unnamed> (Notepad\&.jar)\fP ! .fi ! .nf ! \f3 \-> java\&.awt Full JRE\fP ! .fi ! .nf ! \f3 \-> java\&.awt\&.event Full JRE\fP ! .fi ! .nf ! \f3 \-> java\&.beans Full JRE\fP ! .fi ! .nf ! \f3 \-> java\&.io compact1\fP ! .fi ! .nf ! \f3 \-> java\&.lang compact1\fP ! .fi ! .nf ! \f3 \-> java\&.net compact1\fP ! .fi ! .nf ! \f3 \-> java\&.util compact1\fP ! .fi ! .nf ! \f3 \-> java\&.util\&.logging compact1\fP ! .fi ! .nf ! \f3 \-> javax\&.swing Full JRE\fP ! .fi ! .nf ! \f3 \-> javax\&.swing\&.border Full JRE\fP ! .fi ! .nf ! \f3 \-> javax\&.swing\&.event Full JRE\fP ! .fi ! .nf ! \f3 \-> javax\&.swing\&.text Full JRE\fP ! .fi ! .nf ! \f3 \-> javax\&.swing\&.tree Full JRE\fP ! .fi ! .nf ! \f3 \-> javax\&.swing\&.undo Full JRE\fP ! .fi ! .nf ! \f3\fP ! .fi ! .sp ! Analyzing the immediate dependencies of a specific class in a given classpath, for example the \f3com\&.sun\&.tools\&.jdeps\&.Main\fR class in the tools\&.jar file\&. ! .sp ! .nf ! \f3$ jdeps \-cp lib/tools\&.jar com\&.sun\&.tools\&.jdeps\&.Main\fP ! .fi ! .nf ! \f3lib/tools\&.jar \-> /usr/java/jre/lib/rt\&.jar\fP ! .fi ! .nf ! \f3 com\&.sun\&.tools\&.jdeps (tools\&.jar)\fP ! .fi ! .nf ! \f3 \-> java\&.io \fP ! .fi ! .nf ! \f3 \-> java\&.lang \fP ! .fi ! .nf ! \f3\fP ! .fi ! .sp ! Use the \f3-verbose:class\fR option to find class-level dependencies or use the \f3-v\fR or \f3-verbose\fR option to include dependencies from the same JAR file\&. ! .sp ! .nf ! \f3$ jdeps \-verbose:class \-cp lib/tools\&.jar com\&.sun\&.tools\&.jdeps\&.Main\fP ! .fi ! .nf ! \f3\fP ! .fi ! .nf ! \f3lib/tools\&.jar \-> /usr/java/jre/lib/rt\&.jar\fP ! .fi ! .nf ! \f3 com\&.sun\&.tools\&.jdeps\&.Main (tools\&.jar)\fP ! .fi ! .nf ! \f3 \-> java\&.io\&.PrintWriter \fP ! .fi ! .nf ! \f3 \-> java\&.lang\&.Exception \fP ! .fi ! .nf ! \f3 \-> java\&.lang\&.Object \fP ! .fi ! .nf ! \f3 \-> java\&.lang\&.String \fP ! .fi ! .nf ! \f3 \-> java\&.lang\&.System \fP ! .fi ! .nf ! \f3\fP ! .fi ! .sp ! Use the \f3-R\fR or \f3-recursive\fR option to analyze the transitive dependencies of the \f3com\&.sun\&.tools\&.jdeps\&.Main\fR class\&. ! .sp ! .nf ! \f3$ jdeps \-R \-cp lib/tools\&.jar com\&.sun\&.tools\&.jdeps\&.Main\fP ! .fi ! .nf ! \f3lib/tools\&.jar \-> /usr/java/jre/lib/rt\&.jar\fP ! .fi ! .nf ! \f3 com\&.sun\&.tools\&.classfile (tools\&.jar)\fP ! .fi ! .nf ! \f3 \-> java\&.io \fP ! .fi ! .nf ! \f3 \-> java\&.lang \fP ! .fi ! .nf ! \f3 \-> java\&.lang\&.reflect \fP ! .fi ! .nf ! \f3 \-> java\&.nio\&.charset \fP ! .fi ! .nf ! \f3 \-> java\&.nio\&.file \fP ! .fi ! .nf ! \f3 \-> java\&.util \fP ! .fi ! .nf ! \f3 \-> java\&.util\&.regex \fP ! .fi ! .nf ! \f3 com\&.sun\&.tools\&.jdeps (tools\&.jar)\fP ! .fi ! .nf ! \f3 \-> java\&.io \fP ! .fi ! .nf ! \f3 \-> java\&.lang \fP ! .fi ! .nf ! \f3 \-> java\&.nio\&.file \fP ! .fi ! .nf ! \f3 \-> java\&.nio\&.file\&.attribute \fP ! .fi ! .nf ! \f3 \-> java\&.text \fP ! .fi ! .nf ! \f3 \-> java\&.util \fP ! .fi ! .nf ! \f3 \-> java\&.util\&.jar \fP ! .fi ! .nf ! \f3 \-> java\&.util\&.regex \fP ! .fi ! .nf ! \f3 \-> java\&.util\&.zip \fP ! .fi ! .nf ! \f3/usr/java/jre/lib/jce\&.jar \-> /usr/java/jre/lib/rt\&.jar\fP ! .fi ! .nf ! \f3 javax\&.crypto (jce\&.jar)\fP ! .fi ! .nf ! \f3 \-> java\&.io \fP ! .fi ! .nf ! \f3 \-> java\&.lang \fP ! .fi ! .nf ! \f3 \-> java\&.lang\&.reflect \fP ! .fi ! .nf ! \f3 \-> java\&.net \fP ! .fi ! .nf ! \f3 \-> java\&.nio \fP ! .fi ! .nf ! \f3 \-> java\&.security \fP ! .fi ! .nf ! \f3 \-> java\&.security\&.cert \fP ! .fi ! .nf ! \f3 \-> java\&.security\&.spec \fP ! .fi ! .nf ! \f3 \-> java\&.util \fP ! .fi ! .nf ! \f3 \-> java\&.util\&.concurrent \fP ! .fi ! .nf ! \f3 \-> java\&.util\&.jar \fP ! .fi ! .nf ! \f3 \-> java\&.util\&.regex \fP ! .fi ! .nf ! \f3 \-> java\&.util\&.zip \fP ! .fi ! .nf ! \f3 \-> javax\&.security\&.auth \fP ! .fi ! .nf ! \f3 \-> sun\&.security\&.jca JDK internal API (rt\&.jar)\fP ! .fi ! .nf ! \f3 \-> sun\&.security\&.util JDK internal API (rt\&.jar)\fP ! .fi ! .nf ! \f3 javax\&.crypto\&.spec (jce\&.jar)\fP ! .fi ! .nf ! \f3 \-> java\&.lang \fP ! .fi ! .nf ! \f3 \-> java\&.security\&.spec \fP ! .fi ! .nf ! \f3 \-> java\&.util \fP ! .fi ! .nf ! \f3/usr/java/jre/lib/rt\&.jar \-> /usr/java/jre/lib/jce\&.jar\fP ! .fi ! .nf ! \f3 java\&.security (rt\&.jar)\fP ! .fi ! .nf ! \f3 \-> javax\&.crypto\fP ! .fi ! .nf ! \f3\fP ! .fi ! .sp ! Generate dot files of the dependencies of Notepad demo\&. ! .sp ! .nf ! \f3$ jdeps \-dotoutput dot demo/jfc/Notepad/Notepad\&.jar\fP ! .fi ! .nf ! \f3\fP ! .fi ! .sp ! \f3jdeps\fR will create one dot file for each given JAR file named <\fIfilename\fR>\&.dot in the dot directory specified in the \f3-dotoutput\fR option, and also a summary file named summary\&.dot that will list the dependencies among the JAR files ! .sp ! .nf ! \f3$ cat dot/Notepad\&.jar\&.dot \fP ! .fi ! .nf ! \f3digraph "Notepad\&.jar" {\fP ! .fi ! .nf ! \f3 // Path: demo/jfc/Notepad/Notepad\&.jar\fP ! .fi ! .nf ! \f3 "<unnamed>" \-> "java\&.awt";\fP ! .fi ! .nf ! \f3 "<unnamed>" \-> "java\&.awt\&.event";\fP ! .fi ! .nf ! \f3 "<unnamed>" \-> "java\&.beans";\fP ! .fi ! .nf ! \f3 "<unnamed>" \-> "java\&.io";\fP ! .fi ! .nf ! \f3 "<unnamed>" \-> "java\&.lang";\fP ! .fi ! .nf ! \f3 "<unnamed>" \-> "java\&.net";\fP ! .fi ! .nf ! \f3 "<unnamed>" \-> "java\&.util";\fP ! .fi ! .nf ! \f3 "<unnamed>" \-> "java\&.util\&.logging";\fP ! .fi ! .nf ! \f3 "<unnamed>" \-> "javax\&.swing";\fP ! .fi ! .nf ! \f3 "<unnamed>" \-> "javax\&.swing\&.border";\fP ! .fi ! .nf ! \f3 "<unnamed>" \-> "javax\&.swing\&.event";\fP ! .fi ! .nf ! \f3 "<unnamed>" \-> "javax\&.swing\&.text";\fP ! .fi ! .nf ! \f3 "<unnamed>" \-> "javax\&.swing\&.tree";\fP ! .fi ! .nf ! \f3 "<unnamed>" \-> "javax\&.swing\&.undo";\fP ! .fi ! .nf ! \f3}\fP ! .fi ! .nf ! \f3\fP ! .fi ! .nf ! \f3$ cat dot/summary\&.dot\fP ! .fi ! .nf ! \f3digraph "summary" {\fP ! .fi ! .nf ! \f3 "Notepad\&.jar" \-> "rt\&.jar";\fP ! .fi ! .nf ! \f3}\fP ! .fi ! .nf ! \f3\fP .fi - .sp - .SH SEE\ ALSO - .TP 0.2i - \(bu - javap(1) - .RE - .br - 'pl 8.5i - 'bp --- 17,398 ---- .\" .\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA .\" or visit www.oracle.com if you need additional information or have any .\" questions. .\" ! .\" Automatically generated by Pandoc 2.3.1 .\" ! .TH "JDEPS" "1" "2018" "JDK 13" "JDK Commands" ! .hy .SH NAME ! .PP ! jdeps \- launch the Java class dependency analyzer .SH SYNOPSIS ! .PP ! \f[CB]jdeps\f[R] [\f[I]options\f[R]] \f[I]path\f[R] ... .TP ! .B \f[I]options\f[R] ! Command\-line options. ! For detailed descriptions of the options that can be used, see ! .RS ! .IP \[bu] 2 ! \f[B]Possible Options\f[R] ! .IP \[bu] 2 ! \f[B]Module Dependence Analysis Options\f[R] ! .IP \[bu] 2 ! \f[B]Options to Filter Dependences\f[R] ! .IP \[bu] 2 ! \f[B]Options to Filter Classes to be Analyzed\f[R] ! .RE .TP ! .B \f[I]path\f[R] ! A pathname to the \f[CB]\&.class\f[R] file, directory, or JAR file to ! analyze. ! .RS ! .RE .SH DESCRIPTION ! .PP ! The \f[CB]jdeps\f[R] command shows the package\-level or class\-level ! dependencies of Java class files. ! The input class can be a path name to a \f[CB]\&.class\f[R] 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 \f[CB]jdeps\f[R] command writes the dependencies to the ! system output. ! The command can generate the dependencies in DOT language (see the ! \f[CB]\-dotoutput\f[R] option). ! .SH POSSIBLE OPTIONS ! .TP ! .B \f[CB]\-dotoutput\f[R] \f[I]dir\f[R] or \f[CB]\-\-dot\-output\f[R] \f[I]dir\f[R] ! Specifies the destination directory for DOT file output. ! If this option is specified, then the \f[CB]jdeps\f[R]command generates ! one \f[CB]\&.dot\f[R] file for each analyzed archive named ! \f[CB]archive\-file\-name.dot\f[R] that lists the dependencies, and also a ! summary file named \f[CB]summary.dot\f[R] that lists the dependencies ! among the archive files. ! .RS ! .RE .TP ! .B \f[CB]\-s\f[R] or \f[CB]\-summary\f[R] ! Prints a dependency summary only. ! .RS ! .RE ! .TP ! .B \f[CB]\-v\f[R] or \f[CB]\-verbose\f[R] ! Prints all class\-level dependencies. ! This is equivalent to ! .RS ! .RS ! .PP ! \f[CB]\-verbose:class\ \-filter:none\f[R] ! .RE ! .RE ! .TP ! .B \f[CB]\-verbose:package\f[R] ! Prints package\-level dependencies excluding, by default, dependences ! within the same package. ! .RS ! .RE ! .TP ! .B \f[CB]\-verbose:class\f[R] ! Prints class\-level dependencies excluding, by default, dependencies ! within the same archive. ! .RS ! .RE ! .TP ! .B \f[CB]\-apionly\f[R] or \f[CB]\-\-api\-only\f[R] ! Restricts the analysis to APIs, for example, dependences from the ! signature of \f[CB]public\f[R] and \f[CB]protected\f[R] members of public ! classes including field type, method parameter types, returned type, and ! checked exception types. ! .RS ! .RE ! .TP ! .B \f[CB]\-jdkinternals\f[R] or \f[CB]\-\-jdk\-internals\f[R] ! Finds class\-level dependences in the JDK internal APIs. ! By default, this option analyzes all classes specified in the ! \f[CB]\-\-classpath\f[R] option and input files unless you specified the ! \f[CB]\-include\f[R] option. ! You can\[aq]t use this option with the \f[CB]\-p\f[R], \f[CB]\-e\f[R], and ! \f[CB]\-s\f[R] options. ! .RS ! .PP ! \f[B]Warning\f[R]: The JDK internal APIs are inaccessible. ! .RE ! .TP ! .B \f[CB]\-cp\f[R] \f[I]path\f[R], \f[CB]\-classpath\f[R] \f[I]path\f[R], or \f[CB]\-\-class\-path\f[R] \f[I]path\f[R] ! Specifies where to find class files. ! .RS ! .RE ! .TP ! .B \f[CB]\-\-module\-path\f[R] \f[I]module\-path\f[R] ! Specifies the module path. ! .RS ! .RE ! .TP ! .B \f[CB]\-\-upgrade\-module\-path\f[R] \f[I]module\-path\f[R] ! Specifies the upgrade module path. ! .RS ! .RE ! .TP ! .B \f[CB]\-\-system\f[R] \f[I]java\-home\f[R] ! Specifies an alternate system module path. ! .RS ! .RE ! .TP ! .B \f[CB]\-\-add\-modules\f[R] \f[I]module\-name\f[R][\f[CB],\f[R] \f[I]module\-name\f[R]...] ! Adds modules to the root set for analysis. ! .RS ! .RE ! .TP ! .B \f[CB]\-\-multi\-release\f[R] \f[I]version\f[R] ! Specifies the version when processing multi\-release JAR files. ! \f[I]version\f[R] should be an integer >=9 or base. ! .RS ! .RE ! .TP ! .B \f[CB]\-q\f[R] or \f[CB]\-quiet\f[R] ! Doesn\[aq]t show missing dependencies from ! \f[CB]\-generate\-module\-info\f[R] output. ! .RS ! .RE ! .TP ! .B \f[CB]\-version\f[R] or \f[CB]\-\-version\f[R] ! Prints version information. ! .RS ! .RE ! .SH MODULE DEPENDENCE ANALYSIS OPTIONS ! .TP ! .B \f[CB]\-m\f[R] \f[I]module\-name\f[R] or \f[CB]\-\-module\f[R] \f[I]module\-name\f[R] ! Specifies the root module for analysis. ! .RS ! .RE ! .TP ! .B \f[CB]\-\-generate\-module\-info\f[R] \f[I]dir\f[R] ! Generates \f[CB]module\-info.java\f[R] under the specified directory. ! The specified JAR files will be analyzed. ! This option cannot be used with \f[CB]\-\-dot\-output\f[R] or ! \f[CB]\-\-class\-path\f[R] options. ! Use the \f[CB]\-\-generate\-open\-module\f[R] option for open modules. ! .RS ! .RE ! .TP ! .B \f[CB]\-\-generate\-open\-module\f[R] \f[I]dir\f[R] ! Generates \f[CB]module\-info.java\f[R] for the specified JAR files under ! the specified directory as open modules. ! This option cannot be used with the \f[CB]\-\-dot\-output\f[R] or ! \f[CB]\-\-class\-path\f[R] options. ! .RS ! .RE ! .TP ! .B \f[CB]\-\-check\f[R] \f[I]module\-name\f[R] [\f[CB],\f[R] \f[I]module\-name\f[R]...] ! 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. ! .RS ! .RE ! .TP ! .B \f[CB]\-\-list\-deps\f[R] ! 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 \f[CB]\-\-no\-recursive\f[R] option for non\-transitive dependency ! analysis. ! .RS ! .RE ! .TP ! .B \f[CB]\-\-list\-reduced\-deps\f[R] ! Same as \f[CB]\-\-list\-deps\f[R] 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. ! .RS ! .RE ! .TP ! .B \f[CB]\-\-print\-module\-deps\f[R] ! Same as \f[CB]\-\-list\-reduced\-deps\f[R] with printing a ! comma\-separated list of module dependences. ! The output can be used by \f[CB]jlink\ \-\-add\-modules\f[R] to create a ! custom image that contains those modules and their transitive ! dependences. ! .RS ! .RE ! .TP ! .B \f[CB]\-\-ignore\-missing\-deps\f[R] ! Ignore missing dependences. ! .RS ! .RE ! .SH OPTIONS TO FILTER DEPENDENCES ! .TP ! .B \f[CB]\-p\f[R] \f[I]pkg_name\f[R], \f[CB]\-package\f[R] \f[I]pkg_name\f[R], or \f[CB]\-\-package\f[R] \f[I]pkg_name\f[R] ! Finds dependences matching the specified package name. ! You can specify this option multiple times for different packages. ! The \f[CB]\-p\f[R] and \f[CB]\-e\f[R] options are mutually exclusive. ! .RS ! .RE ! .TP ! .B \f[CB]\-e\f[R] \f[I]regex\f[R], \f[CB]\-regex\f[R] \f[I]regex\f[R], or \f[CB]\-\-regex\f[R] \f[I]regex\f[R] ! Finds dependences matching the specified pattern. ! The \f[CB]\-p\f[R] and \f[CB]\-e\f[R] options are mutually exclusive. ! .RS ! .RE ! .TP ! .B \f[CB]\-\-require\f[R] \f[I]module\-name\f[R] ! Finds dependences matching the given module name (may be given multiple ! times). ! The \f[CB]\-\-package\f[R], \f[CB]\-\-regex\f[R], and \f[CB]\-\-require\f[R] ! options are mutually exclusive. ! .RS ! .RE ! .TP ! .B \f[CB]\-f\f[R] \f[I]regex\f[R] or \f[CB]\-filter\f[R] \f[I]regex\f[R] ! Filters dependences matching the given pattern. ! If give multiple times, the last one will be selected. ! .RS ! .RE ! .TP ! .B \f[CB]\-filter:package\f[R] ! Filters dependences within the same package. ! This is the default. ! .RS ! .RE ! .TP ! .B \f[CB]\-filter:archive\f[R] ! Filters dependences within the same archive. ! .RS ! .RE ! .TP ! .B \f[CB]\-filter:module\f[R] ! Filters dependences within the same module. ! .RS ! .RE ! .TP ! .B \f[CB]\-filter:none\f[R] ! No \f[CB]\-filter:package\f[R] and \f[CB]\-filter:archive\f[R] filtering. ! Filtering specified via the \f[CB]\-filter\f[R] option still applies. ! .RS ! .RE ! .TP ! .B \f[CB]\-\-missing\-deps\f[R] ! Finds missing dependences. ! This option cannot be used with \f[CB]\-p\f[R], \f[CB]\-e\f[R] and ! \f[CB]\-s\f[R] options. ! .RS ! .RE ! .SH OPTIONS TO FILTER CLASSES TO BE ANALYZED ! .TP ! .B \f[CB]\-include\f[R] \f[I]regex\f[R] ! Restricts analysis to the classes matching pattern. ! This option filters the list of classes to be analyzed. ! It can be used together with \f[CB]\-p\f[R] and \f[CB]\-e\f[R], which apply ! the pattern to the dependencies. ! .RS ! .RE ! .TP ! .B \f[CB]\-P\f[R] or \f[CB]\-profile\f[R] ! Shows the profile containing a package. ! .RS ! .RE ! .TP ! .B \f[CB]\-R\f[R] or \f[CB]\-recursive\f[R] ! Recursively traverses all run\-time dependences. ! The \f[CB]\-R\f[R] option implies \f[CB]\-filter:none\f[R]. ! If \f[CB]\-p\f[R], \f[CB]\-e\f[R], or \f[CB]\-f\f[R] options are specified, ! only the matching dependences are analyzed. ! .RS ! .RE ! .TP ! .B \f[CB]\-\-no\-recursive\f[R] ! Do not recursively traverse dependences. ! .RS ! .RE ! .TP ! .B \f[CB]\-I\f[R] or \f[CB]\-inverse\f[R] ! 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 \f[CB]\-\-require\f[R], ! \f[CB]\-\-package\f[R], or \f[CB]\-\-regex\f[R] options. ! .RS ! .RE ! .TP ! .B \f[CB]\-\-compile\-time\f[R] ! Analyzes the compile\-time view of transitive dependencies, such as the ! compile\-time view of the \f[CB]\-R\f[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. ! .RS ! .RE ! .SH EXAMPLE OF ANALYZING DEPENDENCIES ! .PP ! The following example demonstrates analyzing the dependencies of the ! \f[CB]Notepad.jar\f[R] file. ! .PP ! \f[B]Oracle Solaris, Linux, and OS X:\f[R] ! .IP ! .nf ! \f[CB] ! $\ 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 ! \f[R] ! .fi ! .PP ! \f[B]Windows:\f[R] ! .IP ! .nf ! \f[CB] ! 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 ! \f[R] ! .fi ! .SH EXAMPLE USING THE \-\-INVERSE OPTION ! .IP ! .nf ! \f[CB] ! \ $\ 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 ! \f[R] .fi
< prev index next >