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

时间:2010-07-23 06:57:15

标签: java bytecode bytecode-manipulation

  

可能重复:
  Is there a java classfile / bytecode editor to edit instructions?

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

如果有可能,可以编辑吗?

是否有可用的eclipse插件?

5 个答案:

答案 0 :(得分:131)

是。您可以使用JDK附带的javap命令来查看类的字节代码。例如:

javap -c com.mypackage.MyClass

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

答案 1 :(得分:23)

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

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

答案 2 :(得分:16)

查看字节码

忘记javap!我用过的最好的插件是"ASM - Bytecode Outline plugin for Eclipse"

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

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

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

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

要编辑它们

使用代码:

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

手工:JBE

答案 3 :(得分:2)

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

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

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

检查以下其他问题:

Editing a .class file directly, playing around with opcodes

Is it possible to view bytecode of Class file?

Programming in Java bytecode

答案 4 :(得分:0)

尝试使用 - dirtyJOE - Java Overall Editor是一个复杂的编辑器和查看器,用于编译的java二进制文件(.class文件)。