首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java二进制(.class)文件格式解析器?

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

Stack Overflow用户
提问于 2015-02-27 23:41:30
回答 2查看 807关注 0票数 4

我正在寻找一个工具(或工具链),它可以将.class文件解析为Java。类似于:

代码语言:javascript
复制
JavaClass parsed = myTool.parse("/some_folder/SomeClassFile.class");

解析的对象将具有如下方法:

代码语言:javascript
复制
List<JavaMethod> methods = parsed.getMethods();
List<JavaInterface> interfaces = parsed.getImplementedInterfaces();
List<JavaMethod> calls = someMethod.getCalls();

我的限制是:

  1. 其目的是解析项目的所有类,包括jars,因此性能很重要。
  2. 解析器必须解析Java 8 .class文件
  3. Java是我的主要语言,所以如果使用Java,它对我更好。

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

因此,我到目前为止发现了以下几种选择--没有一种是令人满意的:

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-28 02:40:31

我推荐ASM。据我所见,它是目前为止最流行的Java字节码库,是的,它仍然被维护。在撰写本文时,最近的变化似乎是41天前的事了。所以它不是不停地搅动,但也不是被抛弃的。有了这样一个常用的库,支持应该很容易找到。

票数 3
EN

Stack Overflow用户

发布于 2015-08-06 13:28:04

我对JBBP进行了一些解析java类的测试,看看它,也许它对您的https://github.com/raydac/java-binary-block-parser/blob/master/src/test/java/com/igormaznitsa/jbbp/it/ClassParsingTest.java很有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28776205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档