Java进阶:如何反编译jar包获取源码

Posted wu@55555

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java进阶:如何反编译jar包获取源码相关的知识,希望对你有一定的参考价值。

0.引言

某些没有提供源码的历史遗留项目,或者第三方jar包,我们常常需要进行二开,但是又没有源码,这时就需要进行反编译获取到项目源码。

当然也不是所有的jar都能反编译的,某些做了防编译处理的则不能,但对于我们历史遗留的项目进行反编译则是完全可行的

今天我们就来看看如何进行反编译

1. 通过JD-GUI反编译

JD-GUI是一款开源的反编译软件,通过它我们可以比较方便的进行jar包的反编译。

1、其下载地址如下所示

JD-GUI下载地址

2、下载完成后,解压压缩包即可

3、我这里以mac系统为例,双击打开解压文件夹中JD-GUI程序

新版m1芯片mac可能会出现如下报错

提示内容描述的是需要jdk1.8以上,实际上并不是这个原因,我这里使用的是jdk11,要解决这个问题还需要修改一个文件

2、右键点击JD-GUI,点击显示包内容

3、进入Contents/MacOS文件夹,打开universalJavaApplicationStub.sh文件,使用新版的文件替换,新版文件内容可以在如下地址复制

https://raw.githubusercontent.com/tofi86/universalJavaApplicationStub/master/src/universalJavaApplicationStub

因为是外网地址,某些同学访问可能有问题,所以我单独将修改过后的软件包放在如下所示的网盘地址中,有需要可直接下载

JD-GUI mac修改版网盘下载地址
提取码: vkcs

4、双击打开软件,将需要反编译的jar包拖到软件界面中

5、选中全部文件,点击File-Save All Sources保存反编译完的源码,选择保存路径

6、等待反编译完成即可

7、反编译完成后,在BOOT-INF/classes文件夹下可以看到生成的源码

如此我们就拿到了想要的源码了,简单快捷!当然生成的源码在文件夹结构上会有些偏差,只需要手动调整一下即可,核心源码是可以完整捕捉的。

java进阶------源码学习---myeclipse如何查看jar包的源码



查看源码的思路和代码规范是我们学习完善代码编写能力的重要手段。


有时候我们会遇到想看某个jar包中的类和方法的实现,但是无法查看。



这是因为未加载jar包的源码。只要找到jar包的源码并把路径设置好 就可以查看了。


源码下载

源码的下载 需要自己按照版本找好,可以是zip也可以是jar包。

这里有几个找源码的网站,也可以去jar包的官网查找。

github

https://github.com/openjdk-mirror/jdk7u-jdk




sourceforge

https://sourceforge.net/projects/jdk7src/?source=directory






添加源码

下面有三种添加源码的方法:

从source not found页面添加






从项目buildPath添加







maven自动添加

如果你已经使用maven在管理jar,那maven下的包可以很方便的自己下载源代码。点哪看哪全自动只需要改好设置即可。

如果对maven不了解的可以看

Maven介绍

maven设置自动下载源代码如下:

只需要勾选windows-Preferences-Maven- Download Artifact Sources即可。






ps:这里记录了 包含在项目中的包的源码查看的方法,至于外部项目,比如tomcat服务器等的源码是一个完整的项目,找到源码后加载成项目即可查看了。






以上是关于Java进阶:如何反编译jar包获取源码的主要内容,如果未能解决你的问题,请参考以下文章

利用IDEA插件反编译jar包源码

Android源码开发记录-自定义系统服务和jar包生成

apk反编译方式

apk文件反编译后,添加引用jar.再回编.这个想法可以实现么。

高版本Openjdk缺少tools.jar项目编译不过解决办法

java进阶------源码学习---myeclipse如何查看jar包的源码