idea 关联jdk源码_JDK源码阅读项目的搭建

本文介绍了如何在IDEA中搭建JDK源码阅读项目,包括新建项目、导入源码、解决调试时遇到的问题如系统资源不足、缺少tools.jar等问题,并指导完善项目设置,允许调试进入源码以及编辑源码文件。
摘要由CSDN通过智能技术生成

一、JDK源码的重要性

JDK源码的重要性不言而喻,平时的面试、深入学习等都离不开JDK的源码。当然,JDK源码是非常优秀的代码,我们之所以阅读JDK源码,就是为了理解底层原理、学习优秀的设计模式和思想。不过JDK源码也是相当难啃的知识点,我们一定要有信心,不要畏难,硬着头皮去学习,一定会有很大的收获的。

二、搭建JDK源码阅读项目

1、新建项目并导入JDK源码

首先新建一个普通的Java项目,笔者这里将项目取名为jdkSourceLearn,大家可自行选择。

3f4be75f526bee7fe47acacb899d3928.png

bb68e16368b15202e20c609752962f0b.png

建议大家新建两个目录,一个叫source,放置JDK源码;一个叫test,放置测试用例。这样层次结构较为清晰,方面学习。

3ab7dcf219b124debfb15217d2e4d554.png

现在导入JDK源码,找到安装JDK的目录,里面有个叫src.zip的文件,那个就是源码的压缩文件。将其解压完毕后直接拷贝到项目的source目录下即可。

e9c448133caf2329c24a21ce74e0aa94.png

50f446e09be2e5f142ca7d438c8c2040.png

2、创建测试用例尝试调试

这里在test目录下创建一个相关测试用例并尝试进行调试。

package cn.mambalhb.test;

import java.util.HashMap;
import java.util.Set;

public class HashMapTest {

    public static void main(String[] args) {
        HashMap<String, String> map = new HashMap<>();

        map.put("aaa", "AAA");
        map.put("bbb", "BBB");
        map.put("ccc", "CCC");

        Set<String> keys = map.keySet();
        for (String key : keys) {
            System.out.println(key + "===>" + map.get(key));
        }
    }

}

设置断点并点击调试后,通常需要等待项目Build一会,这个时候会出现一堆错误,下面来一个一个解决。

3、解决相关问题

(1)系统资源不足

问题提示如下:

36e81b991ca4a75a49bf4f99e12407d7.png

通过提示可以看出导致这个错误出现的原因是内存不够。解决办法当然是加大内存。 点击File-->Settings-->Build,Execution,Deployment-->Compiler,将Build process heap size(Mbytes)选项加大,默认值是700,笔者这里调至1200:

75ac68338eb29cc2a2e01a1e8a382514.png

(2)程序包com.sun.tools.javac.*不存在

问题提示如下:

c642fe377b00ac6e88aac20bc9822f5c.png

这是缺少tools的jar包所导致的。 点击File-->Project Structure-->Libraries

5c071d3e429cfc7f74915feeb01423a0.png

选择JDK安装目录,在lib目录下找到tools.jar,点击ok导入即可。

79cb70206564b04c59f1f69fbadb9655.png

(3)找不到符号UNIXToolkit、FontConfigManager

问题提示如下:

eaedcdb2745f4da2c223ff53015c19b7.png

34d81a9cfd1b0761eebd8972244800a8.png

这是因为在Windows平台下缺少了两个java类文件所导致的。 这两个类文件可在OpenJDK网站上找到。

a587b527e3f6108e638a57bbdeb01820.png

注意这里选择自己相应的JDK版本,笔者的是jdk1.8.0_162。

a290fec3a172473eeae7987ec72ae376.png

ef2dfd06ba20890f8c9d83d503fb0251.png

c7ad28a83e3632a3a32412eaa5a70054.png

6375ba2a89e6454067fb9d8d947dc4fd.png

2e6aa4e9a7a51ca641901047c89f2e03.png

8a5742aa848724f3a2936bd576df6a80.png

9069700d2fa8804b512b74babdee1d10.png

d7ec1f548d66166bd00328ee1c6ddc41.png

4063096ac1414fef5cf93cc484df81f0.png

d5649dd385174331fc6f132347bb206f.png

找到这两个类文件的位置后,将它们复制进项目如下图所示的位置中。

d40e8e53fdc967e72ec9b49736ec14fd.png

此时再调试或者运行测试用例的时候,可以看到已经成功运行。

17ee3d5c48b6599290735b5df52025b2.png

三、完善项目设置

1、允许调试进入

此时如果我们打断点进行单步调试的话,可以发现点击Step Into无法进入源码内部,因为JDK源码的受保护的,无法进入,但是点击Force Step Into是可以进入源码内部的。如果想要直接按F7(即点击Step Into)进入源码内部的话,需要做如下设置: 点击File-->Settings-->Build,Execution,Deployment-->Debugger-->Stepping,取消勾选Do not step into the classes

b74f14bae357b9e29377e24f0aad0787.png

2、编辑源码文件

如果我们想要对源码文件做记录或者注释时,会发现源码文件是只读的,无法编辑。因为此时项目关联的源码文件还不是刚才复制进项目的文件,而是jdk安装目录下的源码文件。重新将项目关联的源码文件设置成该项目下的源码文件即可。 点击File-->Project Structure-->SDKs

bbc2ad02a83120049541696c302e0a8b.png

这里将原先的jdk安装目录下关联的源码路径删除,添加刚才拷贝至项目目录下的源码路径。

694c4d159bf2feef0b39a7c7dd69ac2c.png

这个时候,再进行调试进入源码内部的时候,可以发现,文件上面的小锁标志已经不见了,源码文件也可以进行注释记录了。

8ad04b4c94ae282eebac5daded6bd205.png

四、总结

至此,关于JDK源码阅读项目的搭建已经完成。平时学习源码的时候,不能只是光看,一定要动手调试,在调试的过程中阅读源码,做记录,写注释,缺一不可。将输入转化为输出,坚持下去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值