有没有可能查看Class文件的字节码?

可能重复:
有没有一个Java类文件/字节码编辑器来编辑指令?

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

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

有没有可用的Eclipse插件?

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

javap -c com.mypackage.MyClass

有几个库和工具可以帮助您处理Java字节码,例如ASM和Jasmin 。

JDK附带了javap ,它是反汇编类文件内部字节码的工具。 在字节代码级上编辑是可能的。 看看BCEL ,一个Java库,旨在读取,操作和编写类文件。

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

查看字节码

忘记javap! 我曾经使用的最好的插件是“用于Eclipse的ASM – Bytecode Outline插件”

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

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

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

更好的是,当你select了源代码的时候,它是这样做的。 您不必在bin目录中find.class文件来检查它的字节码。

编辑它们

使用代码:

  • ASM:基于访问者,速度非常快。
  • BCEL:加载字节码作为类文件的内存描述。
  • Javassit:最简单的一个使用,允许你做模式匹配和expression式replace。

手工:JBE

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

至于编辑器,有两种types:字节码操作库和编辑器与GUI。 这个问题已经被问几次了,你可以检查答案和提供的链接。

只要小心,不要像你想的那样直接编辑字节码。 JVMS对类文件应该如何施加许多限制,并且很有可能你的一个编辑会违反其中的一个。

检查这些其他问题:

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

有没有可能查看Class文件的字节码?

用Java字节码编程

尝试use – dirtyJOE – Java总编辑器是编译的java二进制文件(.class文件)的复杂编辑器和查看器。