你的位置:首页 > Java教程

[Java教程]Eclipse Class Decompiler


若转载,请标明出处http://www.cnblogs.com/last_hunter/p/5626779.html,谢谢!

------------------------------------------------------------------------------------

1. Java反编译插件Jad和JD-Core

来源:http://blog.csdn.net/silentmuh/article/details/46787625

来源:http://blog.csdn.net/liuquan0071/article/details/51004724

Eclipse Class Decompiler,整合了目前最好的2个Java反编译工具Jad和JD-Core,并且和Eclipse Class Viewer无缝集成,能够很方便的使用本插件查看类库源码,以及采用本插件进行Debug调试。

Eclipse Class Decompiler插件更新站点: http://feeling.sourceforge.net/update

离线安装包下载地址一:http://feeling.sourceforge.net/downloads/org.sf.feeling.decompiler_1.0.3.zip
离线安装包下载地址二:http://www.blogjava.net/Files/cnfree/org.sf.feeling.decompiler_1.0.3.zip

本插件仅支持Windows,Linux,Macosx操作系统。

直接使用Eclipse进行更新,支持Eclipse 3.x, 4.x,不依赖任何其他插件,直接勾选更新插件即可。

不少朋友问有没有英文版的,实际上创建一个Eclipse的快捷方式,加上 -nl en_US 参数,所有的插件都会自动显示成英文,包括Eclipse Class Decompiler插件。

在线安装地址 http://feeling.sourceforge.net/update

下图为Eclipse Class Decompiler的首选项页面,可以选择缺省的反编译器工具,并进行反编译器的基本设置。缺省的反编译工具为JD-Core,JD-Core更为先进一些,支持泛型、Enum、注解等JDK1.5以后才有的新语法。

 首选项配置选项:
1.重用缓存代码:只会反编译一次,以后每次打开该类文件,都显示的是缓存的反编译代码。
2.忽略已存在的源代码:若未选中,则查看Class文件是否已绑定了Java源代码,如果已绑定,则显示Java源代码,如果未绑定,则反编译Class文件。若选中此项,则忽略已绑定的Java源代码,显示反编译结果。
3.显示反编译器报告:显示反编译器反编译后生成的数据报告及异常信息。
4.使用Eclipse代码格式化工具:使用Eclipse格式化工具对反编译结果重新格式化排版,反编译整个Jar包时,此操作会消耗一些时间。
5.使用Eclipse成员排序:使用Eclipse成员排序对反编译结果重新格式化排版,反编译整个Jar包时,此操作会消耗大量时间。
6.以注释方式输出原始行号信息:如果Class文件包含原始行号信息,则会将行号信息以注释的方式打印到反编译结果中。
7.根据行号对齐源代码以便于调试:若选中该项,插件会采用AST工具分析反编译结果,并根据行号信息调整代码顺序,以便于Debug过程中的单步跟踪调试。
8.设置类反编译查看器作为缺省的类文件编辑器:默认为选中,将忽略Eclipse自带的Class Viewer,每次Eclipse启动后,默认使用本插件提供的类查看器打开Class文件。


插件提供了系统菜单,工具栏,当打开了插件提供的类反编译查看器后,会激活菜单和工具栏选项,可以方便的进行首选项配置,切换反编译工具重新反编译,以及导出反编译结果。

类反编译查看器右键菜单包含了Eclipse自带类查看器右键菜单的全部选项,并增加了一个“导出反编译源代码”菜单项。

打开项目路径下的Class文件,如果设置类反编译查看器为缺省的查看器,直接双击Class文件即可,如果没有设置为缺省查看器,可以使用右键菜单进行查看。

Eclipse Class Decompiler插件也提供了反编译整个Jar文件或者Java包的反编译。该操作支持Package Explorer对包显示布局的操作,如果是平铺模式布局,则导出的源代码不包含子包,如果是层级模式布局,则导出选中的包及其所有的子包。

Debug调试:可以在首选项选中对齐行号进行单步跟踪调试,和普通的包含源代码时的调试操作完全一致,同样的也可以设置断点进行跟踪。

 

2. 反编译插件jadclipse

来源:http://www.cnblogs.com/java-class/p/4279261.html

来源:http://jingyan.baidu.com/article/3f16e003c857082590c1036f.html

  1. 先下载jadClipse的jar包,链接:sourceforge.net/projects/jadclipse/;下载jad的可执行文件http://varaneckas.com/jad/ 。或者 下载jadClipse地址:链接: http://pan.baidu.com/s/1kTN4TPd  提取码: 3fvd
  2. 将net.sf.jadclipse_3.3.0.jar拷贝到eclipse的plugins目录下;
  3. 删除eclipse的configuration目录下org.eclipse.update (记录Eclipse feature ID 、相对路径、版本号信息 )文件,重新启动eclipse;
  4. 设置jad的可执行文件路径以及生成的临时文件路径,如下图所示:
  5. 设置*.class文件类型默认打开方式,如图:

  

  6.  设置*.class without source文件类型打开方式,点击Associate editors栏下Add增加按钮,添加JadClipse Class File Viewer并设置成默认,如图:

  

ok,可以打开class文件查看了。

--------------------------------------Eclipse 中 plugin和  feature作用和关联 -------------------------------

[什么是plug-in 的基本结构?]
每一个plug-in都用一个目录包起来, 而且起目录名也是有讲究的,比如plug-in的名字叫edu.sjtu.bbs.eclipse,版本是1.0.0, 那这个目录名就是edu.sjtu.bbs.eclipse_1.0.0.
而且随便打开一个plugin目录,可以发现总有一个文件叫一个叫plugin.xml,这个文件对于plugin来说十分重要, 它相当于定义了plugin的运行参数,没有这个,plugin无法启动,
就像你家的电冰箱如果不知道是用110V还是220V的,你也不敢乱往插座上插,所以总要有个说明,这个说明就是plugin.

[什么是 feature ?]
feature是功能部件,它里面没有实际的运行的库,它只是eclipse用来管理plugins的一种途径. 比如你家装了电灯,总要有开关控制,比如大堂的灯有一个开关控制, 卧室的灯
也有一个开关控制, 它们分别用来控制灯的亮与灭。同样,功能部件就是用来控制插件的启动与否. eclipse的update透视图可以设定各个功
能部件的启用或禁用状态, 所以你可以通过禁用功能部件,来禁止插件的启动. 这样有一个好处,比如你装了很多插件在eclipse上,但是装的越多,加载就越多,启动也会变慢。
所以,我们可以把功能部件看作是插件或插件集合的开关, 用来控制插件的状态. 如果plugins目录有插件没有被任何一个功能部件包络的话, 我称之为"野插件", 就是eclipse
启动,它也一定会启动, 就相当于没有开关, 电源一直连通一样。

3. Java Decompiler

连接:http://jd.benow.ca/    Decompiler的介绍及源码。