起因
之前在阅读JDK源码时,由于无法修改JDK源码(被加锁了,只能读,不能写,后面会说为什么不能写的原因),以至于看了很久才理解的代码,过了几个月在看,感觉自己好像失忆了一样,这才想着怎样给JDK源码加注释。
在网上看了一些帖子,好多都说把下图中的那个src.zip文件,解压了,然后把src.zip文件去除掉,再添加上解压的文件就可以添加注释了。
但是,这样添加的注释不能另起一行,要不然在debug的时候会出现行号不对应的情况,于是就想着能自己编译一个JDK就好了,然后就有了这篇文章。
问题一:为什么JDK源码是只读的
- 因为我们依赖的是一个src.zip文件,压缩文件是不能写的,所以我们才会进行解压后再引入,才可以添加注释
问题二:为什么添加注释之后会出现行号不对应的情况
- 因为如果我们修改了JDK源码,就必须重新编译,否则如果换行,会出现行号不对应的情况
解决
现在我们知道了JDK源码在这个src.zip文件夹里,我们能不能自己创建一个项目,然后把这个文件夹放到我们的项目里,这样就可以编译JDK源码了,也就是使用JDK编译JDK源码,想想就有意思,不试试怎么知道,看看能不能成功
创建一个maven管理的项目
编译一下试一试
第一个错误:内存溢出
解决方案:加大一下内存,点击左上角 File | Settings | Build, Execution, Deployment | Compiler
第二个错误:找不到sun.font包下的FontConfigManager这个类
解决方法:我们下载一个放到对应位置即可,网站传送门
第三处错误:缺少sun.awt包下的UNIXTToolit这个类
解决方法:同上
第四,五,六处错误:缺少程序包,不是项目文件缺包,是程序缺包。
解决方法:引入一下即可,File|Project Structure
第七处报错:缺sun.awt包,已经解决
第八处报错:还是缺sun.awt包,已经决绝
重新编译一下试试
注意:如果导入对应的类文件还是报错,就下载高一点版本的类文件试一下