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

第一种:直接用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,回车即可。

阅读更多
文章标签: .class jar Jar 反编译
个人分类: 开发环境
想对作者说点什么? 我来说一句

eclipse源码反编译jar包

2017年11月17日 1.02MB 下载

eclipse反编译jar包源码

2016年09月24日 238KB 下载

eclipse反编译工具和jar包及教程

2016年11月16日 233KB 下载

Eclipse反编译Class文件详解

2009年09月21日 976KB 下载

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭