gpt4 book ai didi

Java 二进制(.class)文件格式解析器?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:21:16 27 4
gpt4 key购买 nike

我正在寻找可以将 .class 文件解析为 Java 对象的工具(或工具链)。像这样的东西:

JavaClass parsed = myTool.parse("/some_folder/SomeClassFile.class");

解析后的对象会有如下方法:

List<JavaMethod> methods = parsed.getMethods();
List<JavaInterface> interfaces = parsed.getImplementedInterfaces();
List<JavaMethod> calls = someMethod.getCalls();

我的约束是:

  1. 目标是解析项目的所有类,包括 jar,因此性能确实很重要。
  2. 解析器必须解析 Java 8 .class 文件
  3. Java 是我的主要语言,所以使用 Java 对我来说更好。

当然我可以做一些编码,例如,如果输出是 xml 就可以了。

所以这里是我到目前为止找到的选项 - 没有一个是令人满意的:

  1. BCEL 或 ASM 看起来像是一种选择的武器,但它们看起来也不再被维护了。此外,它们对我的目的来说有点矫枉过正。
  2. Elipse AST 可以,但据我所知,它仅适用于源文件,我需要解析二进制文件(jar...)
  3. 像 antlr、yacc、bison 这样的解析引擎的语法... 可以,但我还没有找到 .class 文件的引用语法!此外,antlr 用于文本文件,我不知道另一个引用 Java 解析器引擎(正如我所说,我想要一个更好的 Java 工具)。
  4. 我最初认为类加载器 可以完成这项工作,我可以只加载类然后使用反射。但实际上我意识到我需要 Java 反射 API 不提供的东西,比如从特定方法获取调用。

所以这就是我现在的位置!提前感谢您的帮助!

最佳答案

我推荐 ASM。据我所知,它是迄今为止最流行的 Java 字节码库,是的,它仍在维护中。在撰写本文时,它看起来像 the most recent change是 41 天前。所以它不会一直搅动,但也不会被遗弃。有了这样一个常用的库,应该很容易找到支持。

关于Java 二进制(.class)文件格式解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28776205/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com