从外部jar文件中的卸载类读取字节码

时间:2013-04-13 19:02:47

标签: java jar bytecode bytecode-manipulation

在我的Java应用程序中,我希望从未加载的jar文件中读取实际未加载的类文件中的字节码内容。在中,我需要能够获取任何给定的jar文件,并在其中查找所有类,理想情况下。因此,请采取以下措施:

我的应用程序(它是一种库),被要求在任何路径上“检查”某个jar,并提供应用程序使用我的库提供的各种模式来查找相似性(例如常量池相似性)。因此我的库需要遍历类文件中的所有jar。显然我可以让它硬编码或从文件中加载,但我更愿意拥有它,以便我可以通过jar中所有文件的字节码来匹配它们。

1 个答案:

答案 0 :(得分:2)

您应该使用JarFile API并迭代其中的文件。 这应该不难做到。这article可能是一个好的开始。

至于字节码,您可以将每个(未压缩的)类文件视为字节数组并计算散列,也可以是每个文件的MD5散列,并将其与之前的散列进行比较。