说明
- 环境
jdk 版本:1.8.0_381
系统:macos 13.5.1 Intel
- 目的
学习 jdk8 源码,并能自定注释。
新建 java 工程
在 idea 中新建 java 工程,注意并非 maven 工程。
如下图:
完成后,如下图:
配置源码
src.zip
找到 jdk 安装目录下的 src.zip
文件,该文件即为源码压缩包。
如下图:
复制到 idea
解压 src.zip
压缩包,并将解压后的所有文件复制到新建的 java 工程。
解压后的文件如下图所示:
复制到 idea 耗时比较长,须耐心等待。注意不要直接通过finder(资源管理器)复制到对应的目录,因为在 idea 中复制会自动匹配包路径。
复制完成后如下图所示:
解决 tools 不存在
测试程序如下:
public class Main {public static void main(String[] args) {System.out.println("Hello world!");Map<String, Object> map = new HashMap<>();map.put("name", "jay");String name = (String) map.get("name");System.out.println(name);}
}
运行后报错:
java: 程序包com.sun.tools.javac.api不存在
配置 Libraries,进入 File》Project Structure
,选择 jdk 安装目录下的 tools.jar
文件,如下图所示:
点 OK 后,再次运行测试程序,没有报错了。
解决 debug 进入 jdk 相关类
debug 模式下,通过 debug 进去 HashMap 断点,但是进不去,这是因为 idea 的限制。需要进入 Settings 设置。
如下图所示:
去掉如上复选框,点击 OK 即可。
配置源码路径
此时 debug 时,比如进入 HashMap 源码,进入的还是 jdk 的源码,为只读模式,不能添加自己的注释。
打开项目配置,发现 SDKs》Sourcespath 配置的还是 jdk 安装目录下的 src.zip 文件,需要将其改成我们解压后(新建的 java 项目中)的目录。
先删除之前的 src.zip
引用,再添加 java 项目对应的目录。
配置完成后如下图:
点击 OK 后,再次 debug 测试程序,HashMap 对应的就是我们自己 java 项目中的代码了。
完成
现在可以愉快地阅读源码了,并且可以写上自己的注释了。
建议将当的 java 项目上传到自己的 git 仓库。
可以看到,如果进入的 HashMap 在 src.zip
压缩包文件,会有一个感叹号,表示当前文件只读。
但是此时如果点击左上角定位按钮,还是会定位到 jdk 的源码中,这个并不影响我们 debug 和写注释,后续如果我解决了此问题,会及时更新到这里。大佬们如果知道解决方法,欢迎留言,感谢~