一、概要

想要查看jdk源码并希望能够写一些注释。以下是一些概要的步骤,以及会遇到的一些问题。

  • 新建一个项目,并将jdk安装目录下的src压缩包解压到项目下并替换原来的src。
  • 需要让debug时自动关联到项目的src中的源码。
  • 运行一个demo,看是否能运行成功。在此期间会遇到如下问题:
  • 程序包com.sun.tools.javac.api不存在
  • 找不到sun.awt.UNIXToolkit
  • 找不到sun.font.FontConfigManager
  • OutOfMemoryError:insufficient memory(系统资源不足)

二、具体操作以及问题的解决

2.1创建一个Java项目jdk1.8-source-study

idea无法查看java源码 idea 查看jdk源码_idea无法查看java源码


idea无法查看java源码 idea 查看jdk源码_查看源码_02


idea无法查看java源码 idea 查看jdk源码_查看源码_03

2.2 将jdk安装目录下的src.zip复制到当前jdk1.8-source-study解压并替换原来的src

idea无法查看java源码 idea 查看jdk源码_ci_04

idea无法查看java源码 idea 查看jdk源码_jdk安装_05


这时再看idea

idea无法查看java源码 idea 查看jdk源码_java_06

2.3 将原来关联的jdk安装目录下的源码src.zip替换成jdk1.8-source-study的src

idea无法查看java源码 idea 查看jdk源码_查看源码_07


为了避免修改原来的SDKs,另外再添加一个。

idea无法查看java源码 idea 查看jdk源码_jdk安装_08


idea无法查看java源码 idea 查看jdk源码_查看源码_09


idea无法查看java源码 idea 查看jdk源码_jdk安装_10


idea无法查看java源码 idea 查看jdk源码_ci_11


idea无法查看java源码 idea 查看jdk源码_jdk安装_12

建一个Test类测试下,当然第一次运行时可能会很慢。

idea无法查看java源码 idea 查看jdk源码_jdk安装_13

2.4 解决出现的程序包com.sun.tools.javac.api不存在这个问题。

此时你可能会出现一些问题

idea无法查看java源码 idea 查看jdk源码_ci_14

idea无法查看java源码 idea 查看jdk源码_ci_15


idea无法查看java源码 idea 查看jdk源码_idea无法查看java源码_16


点击ok后就可以了。这时就解决了Error:(40, 31) java: 程序包com.sun.tools.javac.api不存在这个问题。

2.5 解决 sun.awt.UNIXToolkit和sun.font.FontConfigManager找不到问题。

idea无法查看java源码 idea 查看jdk源码_ci_17


idea无法查看java源码 idea 查看jdk源码_jdk安装_18


对于缺少的两个类,我们可以去OpenJDK寻找

idea无法查看java源码 idea 查看jdk源码_ci_19


idea无法查看java源码 idea 查看jdk源码_ci_20


idea无法查看java源码 idea 查看jdk源码_jdk安装_21


idea无法查看java源码 idea 查看jdk源码_idea无法查看java源码_22


idea无法查看java源码 idea 查看jdk源码_java_23


idea无法查看java源码 idea 查看jdk源码_idea无法查看java源码_24


idea无法查看java源码 idea 查看jdk源码_java_25


在awt和font下可以找到这两个类。

idea无法查看java源码 idea 查看jdk源码_idea无法查看java源码_26

2.6 解决OutOfMemoryError:insufficient memory(系统资源不足)

idea无法查看java源码 idea 查看jdk源码_查看源码_27


idea无法查看java源码 idea 查看jdk源码_ci_28


idea无法查看java源码 idea 查看jdk源码_ci_29


再次运行Test,发现成功了调试下ArrayList

idea无法查看java源码 idea 查看jdk源码_ci_30


发现可以添加注释了。

idea无法查看java源码 idea 查看jdk源码_查看源码_31