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

Abh*_*ain 98 java bytecode bytecode-manipulation

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

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

如果可能,可以编辑吗?

是否有可用的eclipse插件?

Jes*_*per 145

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

javap -c com.mypackage.MyClass

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

  • 默认情况下,不包括私有方法.使用`-p`也可以包含它们. (10认同)
  • 对我来说只使用文件名(虽然扩展名似乎是可选的),但不使用完全限定的类名:`javap -c -p MyClass.class` (2认同)

And*_*s_D 25

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

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


Dan*_*rry 18

查看字节码

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

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

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

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

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

要编辑它们

使用代码:

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

手工:JBE


H-H*_*H-H 5

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

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

请注意,编辑字节码并不像您想象的那么简单。该JVMS强加类文件应该如何诸多限制,而且还有很大的机会,你的编辑人会违反其中之一。

检查这些其他问题:

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

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

在 Java 字节码中编程