如何以人类可读的方式打开Java .class文件?

cpu*_*uru 108 java windows applet class

我正在试图弄清楚Java applet的类文件在做什么.用记事本或Textpad打开它只会显示出一堆狼吞虎咽的东西.

有没有什么方法可以将它重新组合成一种有点可读的格式,这样我就可以试着找出它在做什么?

  • 环境== Windows w/VS 2008已安装.

Dar*_*enW 202

jd-gui是目前最好的反编译器.与尘封的JAD相比,它可以处理Java中的新功能.

  • 哇,好极了!我很惊讶这个答案对其他人有多大帮助.投票慢慢向上爬......我甚至不是一个java专家!但我确实喜欢好工具. (4认同)
  • 哇!我刚试过这个(丢失了我的笔记本电脑,需要赶紧回来一些消息来源)这真是令人难以置信. (2认同)

Mic*_*ers 73

如果您不介意阅读字节码,javap应该可以正常工作.它是标准JDK安装的一部分.

Usage: javap <options> <classes>...

where options include:
   -c                        Disassemble the code
   -classpath <pathlist>     Specify where to find user class files
   -extdirs <dirs>           Override location of installed extensions
   -help                     Print this usage message
   -J<flag>                  Pass <flag> directly to the runtime system
   -l                        Print line number and local variable tables
   -public                   Show only public classes and members
   -protected                Show protected/public classes and members
   -package                  Show package/protected/public classes
                             and members (default)
   -private                  Show all classes and members
   -s                        Print internal type signatures
   -bootclasspath <pathlist> Override location of class files loaded
                             by the bootstrap class loader
   -verbose                  Print stack size, number of locals and args for methods
                             If verifying, print reasons for failure
Run Code Online (Sandbox Code Playgroud)

  • 这太酷了.我简直不敢相信我不知道这个!哦,需要去玩... (7认同)

Dre*_*ell 7

你想要一个java反编译器,你可以使用命令行工具javap来做到这一点.此外,Java Decompiler HOW-TO描述了如何反编译类文件.


Nil*_*h C 5

正如@MichaelMyers指出的那样,请使用

javap -c <name of java class file> 
Run Code Online (Sandbox Code Playgroud)

获取JVM汇编代码。您也可以将输出重定向到文本文件以获得更好的可见性。

javap -c <name of java class file> > decompiled.txt
Run Code Online (Sandbox Code Playgroud)