1.編譯器以及Jdk版本
1.java環境:jdk1.8.0_231
2.IDEA版本:IntelliJ IDEA Community Edition 2019.3.3 x64
2.搭建過程
首先新建一個簡單的java項目
點擊next
繼續next
輸入project的名字,完成項目創建。
在src下創建兩個包的source 和 test,source中用於存放jdk的源碼,test中用於創建測試方法方便通過debug進入到jdk源碼中,查看和學習jdk的源碼
找到jdk的目錄所在地,將src壓縮包cp出來並且解壓src目錄
得到上圖所示的目錄,並且將src中的所有的目錄都copy到項目中的source的目錄下
ps:最好是直接在系統文件目錄下copy,不要直接copy到編譯器中的目錄下。
點擊project structure進入到下圖中的界面
確定jdk版本,ps:我的版本是jdk1.8
接下來新添加一個jdk
修改SourcePath將src.zip刪除,重新添加項目中的source
添加本地項目中的src中解壓的文件夾所在地址
打開setting設置
取消勾選,主要是爲了防止debug時無法讀取到jdk源碼問題,以及之後可以在源碼中加入自己的理解以及註釋。
修改size的大小,主要是爲了防止build時系統資源不足(OutOfMemoryError)的問題出現
進行程序測試,利用debug測試能否進入到源碼中
3.出現的問題
ps:如果出現OutOfMemoryError的問題就是前面修改build process heap size時未修改 或者 修改的值比較小的原因
a.出現程序包UNIXToolkit或者FontConfigManager不存在時
如下圖所示:
打開OpenJDK的頁面選擇Mercurial
找到UNIXToolkit.java的所在地,因爲我的jdk版本是jdk1.8.0_231,所以選擇了jkd8u的項目
選擇jdk8u對應的jdk
選擇browse,進入目錄
之後文件目錄下的地址爲/src/solaris/classes/sun/awt/,找到UNIXToolkit.java,如法炮製,找到FontConfigManager.java,其地址爲/src/solaris/classes/sun/font/。
在項目中source目錄下新建一個包sun.awt和sun.font將UNIXToolkit.java中的內容複製到sun.awt中的UNIXToolkit中,
將/src/solaris/classes/sun/font/FontConfigManager.java的內容複製到sun.font中的FontConfigManager中。
ps:不用修改原來代碼中的包路徑。
重啓IDEA或者File->Invalidate Caches/Restart…,之後運行測試代碼。
b.出現com.sun.tools.javac不存在
打開project structure,進入到此頁面,添加lib,選擇好本地的jdk目錄下的lib文件。
選擇完成後,應用並確定,之後重啓IDEA或者File->Invalidate Caches/Restart…
最後就可以快樂的F7 F7 F7 F7 F7 F7...。