在eclipse中反编译并查看jar包中的class文件

转载 2012年12月07日 10:53:32

第一种:直接用F3或者ctrl点击查看。
Eclipse反编译工具Jad及插件JadClipse配置:
    Jad是一个Java的一个反编译工具,是用命令行执行,和通常JDK自带的java,javac命令是一样的。不过因为是控制台运行,所以用起来不太方便。不过幸好有一个eclipse的插件JadClipse,二者结合可以方便的在eclipse中查看class文件的源代码。配置如下:
    A.下载相应版本的JadClipse,
http://jadclipse.sourceforge.net/wiki/index.php/Main_Page#Download。将net.sf.jadclipse_3.3.0.jar拷贝到Eclipse下的plugins目录(也可以用links安装)。如果是MyEclipse8.x,将net.sf.jadclipse_3.3.0.jar 拷贝到myeclipse安装目录\Genuitec\Common\plugins\下。在myeclipse安装目录下dropins/创建eclipse文件夹,然后在eclipse文件夹中分别创建features、plugins文件夹,将net.sf.jadclipse_3.3.0.jar 分别拷贝到features和plugins文件夹中。
    B.下载相应版本的Jad,
http://www.varaneckas.com/jad。解压后将Jad.exe拷贝到JDK的bin目录下(方便,与java,javac等常用命令放在一起,可以直接在控制台使用jad命令)
    C.重启Eclipse,在Eclipse->Window->Preferences->Java会多出一个JadClipse目录,单击,在Path to decompiler中输入jad.exe的位置(E:\JDK\jdk1.7.0_03\bin\jad.exe),在Directory for temporary files中可指定临时文件的路径。
    D.在Eclipse->Window->Preferences->General->Editors->File Associations可以看到.class文件的默认打开方式有两个,JadClipse和Eclipse自带的Class File Viewer,而JadClipse是默认的。
    E.配置完成,选择需要查看的类,按F3即可查看源码。
    可以看到最上面的一行"/*jadclipse*/// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.",说明是由jad反编译的。

第二种:批量反编译。将一个jar全部反编译,同时保留树类之间的关系等,还是使用jad工具(或小工具jd-gui.exe)。

   因为之前我们已经将jad加入到了%JAVA_HOME%\bin中,只要配置了环境变量,我们就可以在命令行中方便的使用。在这里,以dom4j-1.6.1.jar为例来说明具体的操作步骤。

   解压dom4j-1.6.1.jar和jaxen-1.1-beta-7.jar。为了方便,我将JAR包解压放到F盘根目录,在cmd中,进入到F盘根路径下,输入命令:jad -o -r -s java -d src org/**/*.class

   我解释一下这些参数的含义:

    -o:覆盖旧文件,而且不用提示确认。

    -r:重新加载生成包结构。

    -s:定义输出文件的扩展名。jad为默认扩展名,我们反编译后当然是要.java源文件了。

    -d:输出文件的目录。src表示反编译后的所有文件都放在src目录下。

    org/**/*.class:org是解压后的文件夹的名字,整个表示org目录下的所有class文件。你也可以写成这样**/*.class,这表示当前目录及其子目录下所有的class文件(包含所有的子目录)。

    反编译dom4j-1.6.1.jar必须得有jaxen-1.1-beta-7.jar,因为dom4j里面有对xpath的调用,而这些东西都是引用jaxen里的API,如果不加则会有错误。

    到此,关于反编译的内容全部说完了,不过我还想补充一点,有可能JAR包中的class文件不是老外的,而是我们自己写的,里面可能会有中文的情况,这时,虽然反编译通过了,但里面却是gb2312形式的unicode编码,因此我们还得做一个工作,将这些编码转换成中文。

    用ant脚本来完成这个工作,内容比较简单,加了注释,应该很好明白,脚本文件名为build.xml,它放在src目录下,和反编译所得的包处在同一层。

<?xml version="1.0" encoding="GBK"?> <project name="decompile" basedir="." default="native2ascii">

     <!-- 定义输出目录 -->

     <property name="build" value="build"/> <!-- 清除输出目录 -->

     <target name="clean">

         <delete dir="${build}"/>

     </target>

     <!-- 创建输出目录 -->

     <target name="init" depends="clean">

         <mkdir dir="${build}"/>

     </target>

     <!-- 编码转换 reverse="true"为反向转换 -->

             <target name="native2ascii" depends="init">

         <native2ascii reverse="true" src="${basedir}" encoding="gb2312" dest="${basedir}/${build}" />

     </target>

 </project>


    有一个地方需要补充一下,在native2ascii元素中,src和dest这两个属性表示着路径。如果反编译后,src目录下,有多个不同的文件夹,这时使用ant来转换编码,请先想好要对哪些文件进行反编码;如果按上面的写法,将会把src目录下的所有文件夹中的所有文件进行反编码。假设,现在有com和org两个文件夹(其实是两个包),我只需要对com中的文件进行反编码,那么可以这样改写:src="${basedir}/com" dest="${basedir}/${build}/com"      其它的都不变。在cmd中进入到src路径下,输入ant,回车即可。

eclipse直接查看jar包中class文件的源代码

我们做项目一般情况下都需要导入jar包,有时候想看下jar包中源码的内容,但是发现都是编译好的class文件,我们想看的是Java文件,当然网上有反编译工具,但是为了一劳永逸,我们可以安装jd-ecl...
  • a532672728
  • a532672728
  • 2017年06月06日 11:57
  • 2667

在eclipse中反编译并查看jar包的class文件,批量反编译

第一种:很方便,直接用F3或者ctrl点击查看。 Eclipse反编译工具Jad及插件JadClipse配置  超傻瓜的教程:   Jad是一个Java的一个反编译工具,是用命令行执行...
  • zhpengfei0915
  • zhpengfei0915
  • 2013年10月11日 17:50
  • 11091

给MyEclipse加入反编译.CLASS文件的功能

一.下载插件      JAD:http://www.joymo.cn/Html/kfzx/J2me_114_1043.html (这是个Xjad,文件中包含一个jad.exe)。 ...
  • TWOTOSKY
  • TWOTOSKY
  • 2012年02月20日 09:22
  • 2371

ctrl+shift+t,怎么看某个class属于哪个工程的那个jar包里?

ctrl+shift+t,怎么看某个class属于哪个工程的那个jar包里?
  • Ideality_hunter
  • Ideality_hunter
  • 2017年06月22日 17:33
  • 238

eclipse 如何调试jar包中的.class文件

最近,换了个项目组,因为项目组中的基线代码(打包成jar的代码)看不到,用jd-gui可以反编译,但是调试遇到了麻烦。因为行数和代码不对应。弄了半个下午,试了很多方法,比如Eclipse Class ...
  • laizixiang
  • laizixiang
  • 2015年04月14日 16:16
  • 5332

Eclipse的jar里的class文件打断点 eclipse打断点调试进入到class文件中-

作者:韩梦飞沙 QQ:313134555 Eclipse的jar里的class文件打断点 - ywswen的专栏 - 博客频道 - CSDN.NETeclipse打断点调试进入到class...
  • yue31313
  • yue31313
  • 2016年07月24日 11:38
  • 3788

eclipse查看jar包中class的中文注释乱码问题的解决

jar包链接的源码,中文注释为乱码的解决方法: 将Eclipse的Preferences中的General》ContentTypes中的Java Class File和Text的default ...
  • bell2008
  • bell2008
  • 2014年11月10日 12:02
  • 32362

在Eclipse中反编译Class文件的方法

学习中,需要反编译Java的class文件。我的开发工具是Eclipse3.6。我找到了jad反编译工具,在互联网上找到了一些很有用的安装步骤。下面记录了我的安装过程。   一、下载   ...
  • u013238336
  • u013238336
  • 2017年03月21日 15:21
  • 1571

eclipse 调试jar包中的.class文件--Decompiler插件

转载博文地址:http://www.blogjava.net/cnfree/archive/2012/10/30/390457.html 用Eclipse Marketplace 搜索 ...
  • seapeak007
  • seapeak007
  • 2016年11月21日 11:38
  • 2255

eclipse上反编译.class文件成java文件(含解决错误)

eclipse上反编译.class文件成java文件(含解决错误)
  • Q176782
  • Q176782
  • 2017年03月24日 19:54
  • 2005
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在eclipse中反编译并查看jar包中的class文件
举报原因:
原因补充:

(最多只允许输入30个字)