如何获取java sun包的源码?,速看这里!!!

前言

由于JDK的src.zip里面没有sun包的源码,所以要在IDEA里面查看sun包下的源码的时候只能看到通过反编译得到的代码,反编译得到的代码没有注释,而且很多局部变量名都变成了var1,var2这样子,看起来不太舒适。如果只是想随便看一看,可以直接在github或者OpenJDK上查看,但是这样看还是比较麻烦的,因为这样在网页上看不能像在IDE一样点击某个类然后跳转到某个类的源码。那么有没有办法可以直接在IDEA里面查看sun包下的源码,而不是在网页上看呢?您好,可以的。

下载源码到本地

使用git把源码clone到本地,然后切换到你想要查看的源码的分支

git clone https://github.com/openjdk-mirror/jdk.git
cd jdk
git checkout jdk8u/jdk8u/master

因为我要看JDK8的sun包的源码,所以我切换到了jdk8u/jdk8u/master分支,后面会在这个jdk目录复制里面的文件夹

修改src.zip

IDEA默认配置的源码文件为src.zip,所以只要把上面下载的源码里面的sun包直接复制到src.zip里面就能通过IDEA直接查看源码了。
src.zip在你的JDK目录下。比如在我的电脑中,我把JDK安装到了/opt/java/jdk1.8.0_192目录,所以我的src.zip文件就在这个目录下。

把src.zip拷到其它目录,然后解压,然后把下载的源码的sun文件夹整个拷贝到解压的src.zip的根目录。sun文件夹在前面下载的源码的src/share/classes目录下

另外sun包还有一些平台相关的代码,在windows,mac还有linux下的实现是不同的,所以需要根据你的平台来选择复制哪个,比如我是linux平台,我还需要复制的是src/solaris/classes目录下的sun文件夹(不复制也可以,因为这些代码在不同的平台的实现是不一样的,基本上只要复制src/share/classes目录下的sun文件夹就足够了,这个sun文件夹的代码是几个平台通用的)

你还可以根据需要复制src/share/classes目录下的其它文件夹到解压后的src.zip目录(这个目录下的Java代码实现都是平台无关的),然后就可以在IDEA查看其它原本的src.zip不提供的源码了。我把这个目录下的全部文件夹都复制进去了,然后还把平台相关的也复制进去了

用修改后的src.zip覆盖原来的

将修改后的src.zip复制回原来的目录,覆盖原本的src.zip,比如我的目录是/opt/java/jdk1.8.0_192,就把魔改后src.zip复制回这里,覆盖原来的src.zip。然后重启IDEA,就能看到效果了

可以看到我的rt.jar包下多了个sun目录

然后在我想要查看java.net.URLConnection的具体实现,比如sun.net.www.protocol.file.FileURLConnection的时候,就能查看真正的源码,而不是反编译后的代码了

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值