如何將jdk12的原始碼匯入idea中
一
首先,在idea中新建一個java工程

接著,在本地找到jdk所在的檔案目錄,進入jdk目錄,找到javasrc目錄或者一個src.zip的壓縮包,
在向下或者解壓壓縮包,找到java.base目錄,這裡面的java目錄,就是我們要找的java最基本的原始碼了,我們主要就是閱讀這部分原始碼

將java.base下的java目錄複製到我們之前新建的java工程的src目錄下

為了方便對原始碼進行除錯,我們在src下面建立一個test目錄,存放我們寫的除錯程式碼

二
為了能夠除錯原始碼,我們還需要對專案進行一些設定
開啟idea的File選單下的Project Structure,Modules, Sources,
將src從Source Folders中去掉

將我們之前建立的test目錄加入到Source Folders中,具體操作,選中test目錄,點選上方的Sources就能看到test目錄加入到右側的Source Folders中了

然後對Platform Settings 下的SDKs進行設定,將SourcePath設定為我們之前匯入專案的原始碼目錄,

並刪掉SourcePath下的其他路徑

點選OK儲存修改。
三
最後我們就可以在test目錄下編寫除錯程式碼,進行除錯。
在除錯前,我們先開啟idea的settings,找到stepping設定選項(可以直接在settings中搜尋找到)
將Do not step into the classes前面的對號去掉,這樣我們在除錯的時候就能單步進入原始碼中了

接下來我們進行除錯,這裡以HashMap的除錯作為例子
我們在test目錄下新建了一個HashMap除錯類,然後在main方法中寫一下簡單的除錯語句,進行除錯

這裡我們就能從斷點位置單步進入到HashMap的原始碼中(這裡可能會先進入Integer類的原始碼中)
