一些Java反编译工具/源代码查看工具的介绍

简介: 一些Java反编译工具/源代码查看工具的介绍

有的朋友抱怨他们在使用他们公司的闭源框架时看不到底层的源代码。那么可以尝试使用一些Java反编译工具。


下面我举个例子介绍具体使用这些反编译工具的步骤。


JAD

假设我们想在Eclipse里查看第42行Graphics2D的源代码:




直接ctrl加左键进去是看不见源码的。




我们可以使用一个开源的工具JAD通过反编译来查看其源代码。JAD的wiki介绍: https://en.wikipedia.org/wiki/JAD_(software)


Eclipse有一个对应的插件,可以从如下这个链接下载:


http://jadclipse.sourceforge.net/wiki/index.php/Main_Page#Download


1. 根据你使用的Eclipse版本到上述链接里下载对应的插件。




2. 根据操作系统的类型下载反编译器的执行文件。在我的windows系统上我下载的是JAD.exe。把JAD插件放到Eclipse的plugins文件夹。




4. 把JAD.exe放到JRE目录的bin文件夹下面。




5. 重启Eclipse, 在菜单路径Windows->Preference->Java里,能看到一个新的选项JadClipse。在这里我们把第四步放好的JAD.exe的绝对路径维护给字段”Path to decompiler”。




6. 现在选中一个class按F3,即可看到JAD反编译之后的Java源代码。




JD-GUI

使用很方便,window下就是一个可执行文件。




双击jd.exe, 然后把你想反编译的.class文件拖进JD的窗口即可:




JD会自动反编译并且把源代码显示出来:通过Maven自动下载依赖包的源代码

如果你的Java项目是通过Maven管理其依赖的,那么想查看依赖包的源代码是一件非常容易的事情:




通过这个Download Sources的右键菜单,可以自动下载依赖包的源代码文件。


例如我的Java项目的pom.xml里定义了cglib这个库的依赖:




那么触发源代码文件的下载之后:




到我的本地仓库根据包的路径名或者文件夹修改时间能够很容易找到刚刚下载的源代码文件。



相关文章
|
6月前
|
存储 Java 数据库连接
从 0 实现一个文件搜索工具 (Java 项目)
从 0 实现一个文件搜索工具 (Java 项目)
73 17
|
5月前
|
Java 编译器 C语言
JAVA如何编译源代码
JAVA如何编译源代码
30 0
|
Java 开发工具 Android开发
java代码混淆工具Allatori
java代码混淆工具Allatori
669 0
|
Java 编译器
强烈推荐的一款 Java 反编译工具:JAD
强烈推荐的一款 Java 反编译工具:JAD
5544 0
强烈推荐的一款 Java 反编译工具:JAD
|
Java Linux Windows
java_编译,反编译以及java为什么能跨平台
编译 从java源代码通过javac编译到一个class文件
82 0
|
Java Android开发 C++
7 款开源 Java 反编译工具
今天我们要来分享一些关于Java的反编译工具,反编译听起来是一个非常高上大的技术词汇,通俗的说,反编译是一个对目标可执行程序进行逆向分析,从而得到原始代码的过程。尤其是像.NET、Java这样的运行在虚拟机上的编程语言,更容易进行反编译得到源代码。
1213 0
|
Java 测试技术 Maven
Java 反编译工具的使用与对比分析(一)
Java 反编译工具的使用与对比分析
719 0
Java 反编译工具的使用与对比分析(一)
|
Java 测试技术 Android开发
Java 反编译工具的使用与对比分析(二)
Java 反编译工具的使用与对比分析
1092 0
Java 反编译工具的使用与对比分析(二)
|
Arthas 自然语言处理 前端开发
Java编译和反编译那些事
挺久没更文章了,之前有一个月在面试,后来写了篇面经,有一些朋友找我交流问题,所以一直没时间写技术文章,估计以后更新文章频率不会那么高了,不过还是会定期分享的,我的目的还是希望我的每篇文章大家都能学到点东西基本概念我们可以通过javac命令将Java程序的源代码编译成Java字节码,即我们常说的class文件,这是我们通常意义上理解的编译但是,字节码并不是机器语言,要想让机器能够执行,还需要把字节码翻译成机器指令,这个过程是通过解释器实现的,叫解释执行在不同的虚拟机实现中,执行引擎在执行字节码的时候,通常会有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择,也可能两
Java 反编译工具的使用与对比分析(三)
Java 反编译工具的使用与对比分析
526 0