112

可能重复:
是否有 java 类文件/字节码编辑器来编辑指令?

Java源代码被编译成字节码,实际上是在class文件中。是否可以查看已编译类的字节码?

如果可能,可以编辑吗?

是否有可用的 Eclipse 插件?

4

5 回答 5

161

是的。您可以使用javapJDK 中包含的命令来查看类的字节码。例如:

javap -c com.mypackage.MyClass

有几个库和工具可以帮助您使用 Java 字节码,例如ASMJasmin

于 2010-07-23T07:00:26.657 回答
26

JDK 带有javap,它是一个反汇编类文件中字节码的工具。可以在字节码级别进行编辑。看看BCEL,一个设计用于读取、操作和编写类文件的 java 库。

可以在java-net上找到编辑字节码的工具和库列表。例如JBE,一个带有 GUI 的 Java 字节码编辑器。

于 2010-07-23T07:00:21.427 回答
19

查看字节码

忘记javap!我用过的最好的插件是“ASM - Eclipse 的字节码大纲插件”

http://asm.ow2.org/eclipse/index.html

它来自 ASM(字节码操作框架)。

它显示了字节码(您要求的)、堆栈元素(jvm 样式)以及如何使用 asm 框架方法生成相同的结果(以生成相同的字节码)。

更好的是,当您选择源代码时它会这样做。您不必在 bin 目录中找到 .class 文件来检查它的字节码。

编辑它们

使用代码:

  • ASM:基于访问者,非常非常快。
  • BCEL:将字节码作为类文件的内存描述加载。
  • Javassit:最容易使用的一种,允许您进行模式匹配和表达式替换。

手工:JBE

于 2010-08-03T01:56:52.897 回答
5

根据我的经验,jclasslib是最好的字节码查看器之一。

至于编辑器,有两种类型:字节码操作库和带有 GUI 的编辑器。这个问题已在 SO 上被问过几次,您可以查看提供的答案和链接。

请注意,编辑字节码并不像您想象的那么简单。JVMS对类文件的格式施加了许多限制,并且您的编辑很可能会违反其中之一。

检查这些其他问题:

直接编辑 .class 文件,玩转操作码

是否可以查看 Class 文件的字节码?

Java字节码编程

于 2010-07-23T07:28:38.213 回答
0

尝试使用 -dirtyJOE - Java 整体编辑器是用于编译的 Java 二进制文件(.class 文件)的复杂编辑器和查看器。

于 2012-02-26T20:30:21.203 回答