繁体   English   中英

我如何找到在Java类中导入的文件?

[英]how can i find the files imported in a java class?

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

请记住,进口仅仅是一种方便的机制,可以让Java开发人员使用它很简单的名字(指一类Date ),而不是它的完全合格的名称(FQN - java.util.Datejava.sql.Date )。

因此,如果通过反编译器运行.class文件,则可能会看到使用FQN的引用,并且可能没有导入语句。

好吧,如果您只是想手动进行操作,建议您看一下反编译器(例如JD GUI)

否则,如果您需要以编程方式获取此信息,则需要采取反思的方式。

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

请注意,如前所述,源导入只是一种便利,并不直接对应于类文件中的任何内容。 扫描常量池将不会显示源文件中未使用的导入,也不会显示仅用于编译时常量的类( public static final String ...等)。 显示FQNs即使是在同一个包中的类,它显示指使用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方法)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM