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

标签 java jar bytecode bytecode-manipulation

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

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

最佳答案

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

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

关于java - 从外部 jar 文件中卸载的类中读取字节码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15991708/

相关文章:

java - 如何直接在java字节码上写/创建.class文件?

java - 当调用新屏幕时,旧屏幕会被处理吗?

java - 使用 ant 使用库创建可执行 jar 后出现 NoClassDefFoundError

java - 使用 maven-dependency-plugin 运行具有 eclipse swt 依赖项的 java jar

java - 如何使第三方 .jar 可用于我的 .jsp 页面?

java - java源码最终是如何与文件交互的?

java - 在常量池中看不到整数值

两个耦合类中的 Java EE EJB 注入(inject)

java - 如何在模型和 View 方法中返回url?

java - 使用 Spring Boot 2 以编程方式将 yaml 字符串转换为 ConfigurationProperties