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

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

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

===============>>#1 票数:200 已采纳

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

===============>>#2 票数:72

如果您不介意阅读字节码,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

===============>>#3 票数:7

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

===============>>#4 票数:3

正如@MichaelMyers所指出的,使用

javap -c <name of java class file> 

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

javap -c <name of java class file> > decompiled.txt

===============>>#5 票数:2

jd-gui“ http://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zip&can=2&q= ”是反编译.class的最佳和用户友好选项文件....

===============>>#6 票数:2

cpuguru,如果您的applet已经使用javac 1.3(或更低版本)编译,那么您最好的选择是使用Jad。

不幸的是,JAD 1。5。8(2001年4月14日)支持的最后一个JDK是JDK 1.3。

如果您的applet已经使用更新的编译器进行编译,那么您可以尝试使用JD-GUI :这个反编译器正在开发中,但是,对于使用JDK 1.4,1.5或1.6编译的类,它大多数时间都会生成正确的Java源代码。

达伦,谢谢你的帖子。 JD-GUI还不是最好的反编译器......但我正在努力:)

===============>>#7 票数:2

使用Jad进行反编译可能是您最好的选择。 除非代码被混淆,否则它将产生一个好的结果。

===============>>#8 票数:2

您正在寻找的是java解编译器。 我推荐JAD http://www.kpdus.com/jad.html它可以免费用于非商业用途并完成工作。

注意:这不会使代码与编写的代码完全相同。 即你将失去评论和可能的变量名称,所以它将比阅读正常的源代码更难。 如果开发人员真的很隐秘,他们也会对代码进行模糊处理,使其更难阅读。

===============>>#9 票数:1

这是已编译的代码,您需要使用像JAD这样的反编译器: http//www.kpdus.com/jad.html

===============>>#10 票数:1

你需要使用反编译器。 其他人建议JAD,还有其他选择,JAD是最好的。

我会回应一下与原始源代码相比可能会丢失一些的评论。 如果代码使用泛型,由于擦除,它看起来会特别有趣。

===============>>#11 票数:1

肯定是JAD和/或JADclipse Eclipse插件。

===============>>#12 票数:1

如果要查看的类文件是开源的,则不应对其进行反编译,而是将源文件直接附加到IDE中。 这样,您可以只查看某些库类的代码,就好像它是您自己的代码一样

===============>>#13 票数:0

CFR - 另一个java反编译器是一个伟大的反编译器,用于编写Java 6的现代Java。

===============>>#14 票数:0

你也可以使用在线java反编译器。 例如http://www.javadecompilers.com

===============>>#15 票数:0

如建议您可以使用JAD对其进行反编译并查看文件。 为了便于阅读,您可以使用eclipse的JADclipse插件将JAD直接集成到eclipse或使用DJ Java Decompiler,它比命令行JAD更容易使用

===============>>#16 票数:0

如果您想要可读的Java代码,JAD是一个很好的选择。 如果您真的想深入研究.class文件格式的内部,那么您将需要javap 它与JDK捆绑在一起,允许您将十六进制字节码“反编译”为可读的ASCII。 它产生的语言仍然是字节码(不像Java那样),但它具有相当的可读性和极具指导性。

此外,如果您真的想要,可以在十六进制编辑器中打开任何.class文件并直接读取字节码。 结果与使用javap相同。

===============>>#17 票数:0

无需反编译Applet.class。 公共Java API类源代码随JDK一起提供(如果您选择安装它),并且比反编译的字节码更易读。 您可以在src.zip(位于JDK安装文件夹中)中找到压缩文件。

  ask by cpuguru translate from so

未解决问题?本站智能推荐:

1回复

Java声音文件未播放

我在常规类中有这个,而不是applet,所以我不确定这是否是问题,但这是我的代码: 音频文件位于我的G驱动器的闪存驱动器中,而不位于文件夹中。 我将不胜感激任何帮助!
1回复

Java Applet类文件

我正在尝试为中级Java类分配作业。 我应该写这个小程序并提交.java,.class和.html文件。 我转到.html文件,查看我到目前为止所写的内容是否会显示在网页上,但是现在可以了。 我似乎没有.class文件。 这是我的代码。 我正在使用NetBeans。 有人可以
7回复

.class vs .java

.class文件和.java文件之间有什么区别? 我试图让我的applet工作,但目前我只能在Eclipse中运行它,我还不能嵌入HTML。 谢谢 **编辑:如何用JVM编译呢?
2回复

Java编译错误:类Appletprac是公共的,应该在名为Appletprac.java的文件中声明

当我编译java程序时,我收到此错误:类Appletprac是公共的,应该在名为Appletprac.java的文件中Appletprac.java 这是我的java代码:
1回复

Java Frame类继承

如果允许新手提问,有人可以指出我在线文档以显示Java Frame类如何从Applet继承吗? 我的老师已建议这样做(即Frame确实从Applet继承),至少对于Java 2 ver。 5.0,但是我找不到在线文档来显示它。 我是Java新手,想了解如何研究它。 我正在浏览网站http
1回复

在主类中单击按钮即可调用内部类。 Java Applet

我正在尝试制作一个包含3个选项的菜单。 我想将所有这些选项都设为一个类。 并单击按钮调用该类。 我很难弄清楚如何调用内部类。 你能帮我吗?
1回复

将方法输出从Java类移动到HTML

我正在用Java编程,并且有一个简单的hello-world类型类,该类可以很高兴地向控制台提供输出。 我想做的就是将此类或类似类的输出传输到HTML-最好无需使用applet。 在我的脑海中,我正在想象HTML文件中包含的代码行,它们将沿着“用以下参数调用该类文件并在此处打印结果”
1回复

如何访问在JTabbedPane(Java)中作为选项卡多次调用的类内的变量

我正在创建一个Java应用程序。 我有一个q2a2类,它是一个jpanel,其设计如下所示:-img- 假设是否从组合框中选择了一个项目,然后单击了“创建帐户”按钮。 一个选项卡已添加到jTabbedPane。 每个项目都有一个共同的标签。 所以我所做的就是创建一个类,并在每
1回复

屏幕和上传Java类本地但不在线。 没有任何错误。 怎么了?

我是新手,所以请不要对我太过刻薄。 这个概念非常简单,我希望我的用户能够查看我网站的某个部分,其中的屏幕截图已在他们的计算机上快照并上传回我的网站。 我没有在网上看到任何可见的错误,但是我猜测上传部分有问题,因为当我主持课程时,我的帐户中没有设置屏幕截图img。 在本地,路径设置在C:
1回复

如何将一个类的ChangeListener引用到另一个类?

我放弃了所有这些代码,并在完全不同的一个上进行了工作。>>>> 我从教授那里得到了作业。 他告诉我们使用4个类来编写applet绘画程序。 主要; LightSourcePanel; DrawingPanel; PalettePanel; (基本代码没有