利用IDEA搭建JDK1.8源碼閱讀調試環境

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...。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章