📜  Java 8 中的Java类依赖分析器和示例

📅  最后修改于: 2022-05-13 01:55:00.176000             🧑  作者: Mango

Java 8 中的Java类依赖分析器和示例

Java类依赖分析器jdepsJDK 8中引入的一个新的命令行工具,用于了解应用程序的静态依赖项和库,即 jdeps 命令显示Java类文件的包级别或类级别的依赖关系。 jdeps 的输入可以是 .class 文件路径名、JAR 文件,也可以是用于分析所有类文件的完全限定类名。每当我们向 jdeps 命令行工具提供任何输入时,它就会生成对系统控制台的依赖项。 jdeps 引入了各种影响输出的选项。根据选项,jdeps 命令行工具生成输出。

例子:

// 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 list1 = new ArrayList<>();
        List list2 = new ArrayList<>();
        List list3 = new ArrayList<>();
  
        list1.add("Geeks");
        list2.add("for");
        list3.add("geeks");
  
        System.out.println(list1);
        System.out.println(list2);
        System.out.println(list3);
    }
}

注意:我们必须在 Geeks 之上编译。 Java文件和编译器将生成 Geeks.class 文件,我们必须将此文件用作 jdeps 的输入。在这里,我使用Java 9 运行,我们将看到 jdeps 的输出,根据Java 9,此 Geeks.class 文件具有不同的选项。

输出:

jdeps Geeks.class

可用于 jdeps 的各种选项:

  • -dotoutput directoryPath :如果我们将使用此选项,那么 jdeps 将在每个名为 .dot 的已分析档案的目录中生成一个点文件,其中列出了依赖项。它还将生成一个名为 summary.dot 的摘要文件,指定档案之间的依赖关系。

    输出:

    jdeps -dotoutput C:\Users\DubeyBis\Desktop\jdeps Geeks.class

    它将在 C:\Users\DubeyBis\Desktop\jdeps 文件夹中生成两个文件,名称为Geeks.class.dotsummary.dot ,这些文件的内容如下:

    极客.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)";
    }
    

    摘要.dot

    digraph "summary" {
      "Geeks.class"        -> "rt.jar";
    }
    
  • -summary :它将仅打印摘要。除了 -summary,我们也可以使用 -s。

    输出:

    jdeps -summary Geeks.class

  • -verbose :它将打印所有类级别的依赖项。除了 -verbose,我们也可以使用 -v。

    输出:

    jdeps -verbose Geeks.class

  • -verbose:package :打印包级依赖项,不包括同一存档中的依赖项。
  • -verbose:class :打印类级别的依赖关系,不包括同一存档中的依赖关系。

    输出:

    jdeps -verbose:class Geeks.class