IDEA 搭建 JDK 源码阅读环境,超详细,附上 JDK 2 - 15 源码哦!!!

本次搭建使用 jdk 的版本为 jdk1.8.0_201,idea 版本 2020.1,提供 jdk 2 - 15 压缩包如下:JDK1.2 到 15 压缩包(密码:ia4z)

一、找到 JDK 的 src.zip

我们找到 JDK 安装包所在目录,会看到 src.zip 的压缩包,这里面就是 JDK 的源码,如下图。
IDEA 搭建 JDK 源码阅读环境,超详细,附上 JDK 2 - 15 源码哦!!!_第1张图片

二、使用 IDEA 进行搭建

1、创建一个简单的 Java 工程

file -> new -> project -> next -> next -> 输入工程名称,地址后点击 finish 即可。
IDEA 搭建 JDK 源码阅读环境,超详细,附上 JDK 2 - 15 源码哦!!!_第2张图片

2、把源码 src.zip 解压到该工程下的 src 目录下

IDEA 搭建 JDK 源码阅读环境,超详细,附上 JDK 2 - 15 源码哦!!!_第3张图片
如上图所示,表示导入成功。

3、要让代码运行时自动关联到当前项目 src 目录下的代码

为了不影响平时使用 jdk 的源码,我创建了一个 1.8learning,唯一的差别就是把原来的 src.zip 换成了 jdk1.8-source-learning 的 src 目录.
1)添加一个 jdk
IDEA 搭建 JDK 源码阅读环境,超详细,附上 JDK 2 - 15 源码哦!!!_第4张图片
2)替换 src.zip 为 jdk1.8-source-learning 的 src 目录,记得点击 ok
IDEA 搭建 JDK 源码阅读环境,超详细,附上 JDK 2 - 15 源码哦!!!_第5张图片
3)修改 module sdk 的 dependencies ,记得点击 ok
IDEA 搭建 JDK 源码阅读环境,超详细,附上 JDK 2 - 15 源码哦!!!_第6张图片

4、执行 mian 方法

执行 main 方法后,发现出现各种 error,如下:
Error:java: OutOfMemoryError: insufficient memory(系统资源不足)
程序包 com.sun.tools.javac.api 不存在
找不到 sun.awt.UNIXToolkit
找不到 sun.font.FontConfigManager

5、解决办法

问题1:缺少 com.sun.tools 包

在这里插入图片描述
解决办法:File => Project structure => Libraries 把 jdk 路径下的 lib 包添加到工程中,如下图(记得点击ok):
IDEA 搭建 JDK 源码阅读环境,超详细,附上 JDK 2 - 15 源码哦!!!_第7张图片

问题2:编译过程中报 java:OutOfMemory,提示系统资源不足

解决办法:idea里 File => Settings => Build,Execution,Deployment =>
Compiler => Build process heap size 调大一点,我的改成 1000 就行了,然后记得点击 ok )

IDEA 搭建 JDK 源码阅读环境,超详细,附上 JDK 2 - 15 源码哦!!!_第8张图片

问题3:缺少 sun.awt.UNIXToolkit 和 sun.font.FontConfigManager 这两个类

解决办法:
1)首先在 src 创建一个类,如下所示,
IDEA 搭建 JDK 源码阅读环境,超详细,附上 JDK 2 - 15 源码哦!!!_第9张图片
2)在 src 再次创建一个类,如下所示
IDEA 搭建 JDK 源码阅读环境,超详细,附上 JDK 2 - 15 源码哦!!!_第10张图片
3)我们需要从 open jdk 官网从找到 jdk 版本所对应的这两个类与我们刚刚创建的类进行替换。
UNIXToolkit.java
FontConfigManager.java

6、run 测试

执行如下代码:

public class Main {
     
    public static void main(String[] args) {
     
        System.out.println("Hello JDK !!!");
    }
}

IDEA 搭建 JDK 源码阅读环境,超详细,附上 JDK 2 - 15 源码哦!!!_第11张图片
搭建成功!!!

7、debug 测试

debug 执行如下代码

public class Main {
     
    public static void main(String[] args) {
     
        HashMap<String, String> map = new HashMap<>();
        map.put("k1", "v1");
        map.put("k2", "v2");
        map.put("k3", "v3");
    }
}

IDEA 搭建 JDK 源码阅读环境,超详细,附上 JDK 2 - 15 源码哦!!!_第12张图片
发现 Setp Into 追不进去,这是因为 jdk 源码是受保护的,我们需要进行设置,如下(记得点击 ok):
IDEA 搭建 JDK 源码阅读环境,超详细,附上 JDK 2 - 15 源码哦!!!_第13张图片
此时 dubug 就没问题,但是当你在源码中写过注释,然后再次打断点,你就会发现提示你“Source code does not match the bytecode”,发生了错乱,解决方法看这篇博客jdk源码写过注释后debug提示source code does not match the bytecode
参考链接:
https://blog.csdn.net/IT_Migrant_worker/article/details/104743218
idea中搭建jdk1.8源码阅读环境
https://blog.csdn.net/u010999809/article/details/102762142

你可能感兴趣的:(源码,java,jdk,源码,intellij,idea,jdk1.8)