JDK源碼的重要性不言而喻,平時的面試、深刻學習等都離不開JDK的源碼。固然,JDK源碼是很是優秀的代碼,咱們之因此閱讀JDK源碼,就是爲了理解底層原理、學習優秀的設計模式和思想。不過JDK源碼也是至關難啃的知識點,咱們必定要有信心,不要畏難,硬着頭皮去學習,必定會有很大的收穫的。java
首先新建一個普通的Java項目,筆者這裏將項目取名爲jdkSourceLearn,你們可自行選擇。
建議你們新建兩個目錄,一個叫source,放置JDK源碼;一個叫test,放置測試用例。這樣層次結構較爲清晰,方面學習。
如今導入JDK源碼,找到安裝JDK的目錄,裏面有個叫src.zip的文件,那個就是源碼的壓縮文件。將其解壓完畢後直接拷貝到項目的source目錄下便可。面試
這裏在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一會,這個時候會出現一堆錯誤,下面來一個一個解決。學習
問題提示以下:
經過提示能夠看出致使這個錯誤出現的緣由是內存不夠。解決辦法固然是加大內存。
點擊File-->Settings-->Build,Execution,Deployment-->Compiler,將Build process heap size(Mbytes)選項加大,默認值是700,筆者這裏調至1200:測試
問題提示以下:
這是缺乏tools的jar包所致使的。
點擊File-->Project Structure-->Libraries
選擇JDK安裝目錄,在lib目錄下找到tools.jar,點擊ok導入便可。網站
問題提示以下:
這是由於在Windows平臺下缺乏了兩個java類文件所致使的。
這兩個類文件可在OpenJDK網站上找到。
注意這裏選擇本身相應的JDK版本,筆者的是jdk1.8.0_162。
找到這兩個類文件的位置後,將它們複製進項目以下圖所示的位置中。
此時再調試或者運行測試用例的時候,能夠看到已經成功運行。ui
此時若是咱們打斷點進行單步調試的話,能夠發現點擊Step Into沒法進入源碼內部,由於JDK源碼的受保護的,沒法進入,可是點擊Force Step Into是能夠進入源碼內部的。若是想要直接按F7(即點擊Step Into)進入源碼內部的話,須要作以下設置:
點擊File-->Settings-->Build,Execution,Deployment-->Debugger-->Stepping,取消勾選Do not step into the classes。spa
若是咱們想要對源碼文件作記錄或者註釋時,會發現源碼文件是隻讀的,沒法編輯。由於此時項目關聯的源碼文件還不是剛纔複製進項目的文件,而是jdk安裝目錄下的源碼文件。從新將項目關聯的源碼文件設置成該項目下的源碼文件便可。
點擊File-->Project Structure-->SDKs
這裏將原先的jdk安裝目錄下關聯的源碼路徑刪除,添加剛纔拷貝至項目目錄下的源碼路徑。
這個時候,再進行調試進入源碼內部的時候,能夠發現,文件上面的小鎖標誌已經不見了,源碼文件也能夠進行註釋記錄了。.net
至此,關於JDK源碼閱讀項目的搭建已經完成。平時學習源碼的時候,不能只是光看,必定要動手調試,在調試的過程當中閱讀源碼,作記錄,寫註釋,缺一不可。將輸入轉化爲輸出,堅持下去。設計