【问题标题】:how can i find the files imported in a java class?如何找到在 java 类中导入的文件?
【发布时间】:2011-07-27 04:32:07
【问题描述】:

我看不到源代码,而是看到 .class 文件。 导入的文件还能查到吗?

【问题讨论】:

  • “进口”是什么意思?

标签: java


【解决方案1】:

好吧,如果你只是想手动做的话,我建议你看看JD GUI之类的反编译器

否则,如果您希望以编程方式获取此信息,则需要采用反射方式。

【讨论】:

    【解决方案2】:

    请记住,导入只是一种便利机制,它让 Java 开发人员可以使用简单名称 (Date) 而不是完全限定名称 (FQN - java.util.Datejava.sql.Date) 来引用类。

    因此,如果您运行 .class 文件 through a decompiler,您可能会看到使用 FQN 的引用,并且可能没有导入语句。

    【讨论】:

      【解决方案3】:

      如果您需要批量执行此操作,并且不想打扰反编译器提供的所有其他细节,您可以检查常量池以查找类引用。

      请注意,如前所述,源导入只是为了方便,并不直接对应于类文件中的任何内容。扫描常量池将显示源文件中未使用的导入,并且显示仅用于编译时常量(public static final String ... 等)的类。它显示FQN,即使是同一包中的类,它显示使用FQN引用的类而无需导入。它显示隐式使用其签名的类:

      URL loc = Something.class.getProtectionDomain().getCodeSource().getLocation();
      

      将在字节码中生成对 ProtectionDomainCodeSource 的引用,即使源没有明确提及它们。

      https://hg.netbeans.org/core-main/raw-file/default/nbbuild/antsrc/org/netbeans/nbbuild/VerifyClassLinkage.java 是如何进行此扫描的示例(请参阅dependencies 方法)。

      【讨论】:

        猜你喜欢
        • 2020-10-02
        • 1970-01-01
        • 2011-11-16
        • 2021-09-08
        • 1970-01-01
        • 2020-11-18
        • 1970-01-01
        • 2017-04-29
        • 1970-01-01
        相关资源
        最近更新 更多