jdeps (original) (raw)

Examples

Analyzing the dependencies of Notepad.jar.

$ jdeps demo/jfc/Notepad/Notepad.jar

demo/jfc/Notepad/Notepad.jar -> /usr/java/jre/lib/rt.jar (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

Use -P or -profile option to show on which profile that Notepad depends.

$ jdeps -profile demo/jfc/Notepad/Notepad.jar demo/jfc/Notepad/Notepad.jar -> /usr/java/jre/lib/rt.jar (Full JRE) (Notepad.jar) -> java.awt Full JRE -> java.awt.event Full JRE -> java.beans Full JRE -> java.io compact1 -> java.lang compact1 -> java.net compact1 -> java.util compact1 -> java.util.logging compact1 -> javax.swing Full JRE -> javax.swing.border Full JRE -> javax.swing.event Full JRE -> javax.swing.text Full JRE -> javax.swing.tree Full JRE -> javax.swing.undo Full JRE

Analyzing the immediate dependencies of a specific class in a given classpath, for example the com.sun.tools.jdeps.Main class in the tools.jar file.

$ jdeps -cp lib/tools.jar com.sun.tools.jdeps.Main lib/tools.jar -> /usr/java/jre/lib/rt.jar com.sun.tools.jdeps (tools.jar) -> java.io
-> java.lang

Use the -verbose:class option to find class-level dependencies or use the -v or -verbose option to include dependencies from the same JAR file.

$ jdeps -verbose:class -cp lib/tools.jar com.sun.tools.jdeps.Main

lib/tools.jar -> /usr/java/jre/lib/rt.jar com.sun.tools.jdeps.Main (tools.jar) -> java.io.PrintWriter
-> java.lang.Exception
-> java.lang.Object
-> java.lang.String
-> java.lang.System

Use the -R or -recursive option to analyze the transitive dependencies of the com.sun.tools.jdeps.Main class.

$ jdeps -R -cp lib/tools.jar com.sun.tools.jdeps.Main lib/tools.jar -> /usr/java/jre/lib/rt.jar com.sun.tools.classfile (tools.jar) -> java.io
-> java.lang
-> java.lang.reflect
-> java.nio.charset
-> java.nio.file
-> java.util
-> java.util.regex
com.sun.tools.jdeps (tools.jar) -> java.io
-> java.lang
-> java.nio.file
-> java.nio.file.attribute
-> java.text
-> java.util
-> java.util.jar
-> java.util.regex
-> java.util.zip
/usr/java/jre/lib/jce.jar -> /usr/java/jre/lib/rt.jar javax.crypto (jce.jar) -> java.io
-> java.lang
-> java.lang.reflect
-> java.net
-> java.nio
-> java.security
-> java.security.cert
-> java.security.spec
-> java.util
-> java.util.concurrent
-> java.util.jar
-> java.util.regex
-> java.util.zip
-> javax.security.auth
-> sun.security.jca JDK internal API (rt.jar) -> sun.security.util JDK internal API (rt.jar) javax.crypto.spec (jce.jar) -> java.lang
-> java.security.spec
-> java.util
/usr/java/jre/lib/rt.jar -> /usr/java/jre/lib/jce.jar java.security (rt.jar) -> javax.crypto

Generate dot files of the dependencies of Notepad demo.

$ jdeps -dotoutput dot demo/jfc/Notepad/Notepad.jar

jdeps will create one dot file for each given JAR file named <_filename_>.dot in the dot directory specified in the -dotoutput option, and also a summary file named summary.dot that will list the dependencies among the JAR files

$ cat dot/Notepad.jar.dot digraph "Notepad.jar" { // Path: demo/jfc/Notepad/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"; }

$ cat dot/summary.dot digraph "summary" { "Notepad.jar" -> "rt.jar"; }