Java class dependency analyzer in Java 8 with Examples - GeeksforGeeks

29 Jan, 2020
Java class dependency analyzer: jdeps is a new command-line tool introduced in JDK 8 to understand the static dependencies and libraries of application i.e. jdeps command shows the package-level or class-level dependencies of Java class files. The input for jdeps can be a .class file pathname, a JAR file or it can be a fully qualified class name to analyze all class files. Whenever we provide any input to jdeps command line tool then it generates the dependencies to the system console. jdeps introduced with various options which affect the output. As per option, jdeps command-line tool generates the output.
Example:
// Simple Java program to see the jdeps// generated output with various options  import java.util.List;import java.util.ArrayList;  class Geeks {    public static void main(String args[])    {          List<String> list1 = new ArrayList<>();        List<String> list2 = new ArrayList<>();        List<String> list3 = new ArrayList<>();          list1.add("Geeks");        list2.add("for");        list3.add("geeks");          System.out.println(list1);        System.out.println(list2);        System.out.println(list3);    }}
Note: We have to compile above Geeks.java file and compiler will generate Geeks.class file and We have to use this file as an input for jdeps. Here I am running with Java 9 and we will see the output of jdeps with different options for this Geeks.class file as per Java 9.
Output:
jdeps Geeks.class
Various options available for jdeps:
-dotoutput directoryPath: If we will use this option, then jdeps will generate one dot file into the directory per each analyzed archive named .dot listing the dependencies. It will also generate a summary file named summary.dot specifying the dependencies among the archives.Output:jdeps -dotoutput C:\Users\DubeyBis\Desktop\jdeps Geeks.classIt will generate two files inside C:\Users\DubeyBis\Desktop\jdeps folder with the name Geeks.class.dot and summary.dot and the content of these files are below:Geeks.class.dotdigraph "Geeks.class" {
    // Path: Geeks.class
   ""                  -> "java.io (java.base)";
   ""                  -> "java.lang (java.base)";
   ""                  -> "java.lang.invoke (java.base)";
   ""                  -> "java.util (java.base)";
}
summary.dotdigraph "summary" {
  "Geeks.class"        -> "rt.jar";
}

Output:
jdeps -dotoutput C:\Users\DubeyBis\Desktop\jdeps Geeks.class
It will generate two files inside C:\Users\DubeyBis\Desktop\jdeps folder with the name Geeks.class.dot and summary.dot and the content of these files are below:
Geeks.class.dot
digraph "Geeks.class" {
    // Path: Geeks.class
   ""                  -> "java.io (java.base)";
   ""                  -> "java.lang (java.base)";
   ""                  -> "java.lang.invoke (java.base)";
   ""                  -> "java.util (java.base)";
}

summary.dot
digraph "summary" {
  "Geeks.class"        -> "rt.jar";
}

-summary: It will print only the summary. Instead of -summary, we can use -s also.Output:jdeps -summary Geeks.class
Output:
jdeps -summary Geeks.class
-verbose: It will print all class-level dependencies. Instead of -verbose, we can use -v also.Output:jdeps -verbose Geeks.class
Output:
jdeps -verbose Geeks.class
-verbose:package: Prints package-level dependencies excluding dependencies within the same archive.
-verbose:class: Prints class-level dependencies excluding dependencies within the same archive.Output:jdeps -verbose:class Geeks.class
Output:
jdeps -verbose:class Geeks.class
Java 8
Java-Classes
Technical Scripter 2019
Java
Technical Scripter
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Functional Interfaces in Java
Stream In Java
Constructors in Java
Different ways of Reading a text file in Java
Exceptions in Java
Generics in Java
Comparator Interface in Java with Examples
Strings in Java
How to remove an element from ArrayList in Java?
Difference between Abstract Class and Interface in Java