
背景
每個版本的 jdk 的安裝包中都有一個 src.zip
可以匯入到 IDE 中關聯原始碼,開發的時候也便於檢視原始碼,但是 src.zip
中的原始碼並不是rt.jar
的全部內容,嘗試通過其他途徑獲取不在此包的原始碼。
現有原始碼
通過 IDE可以方便的額看到,rt.jar
中的結構如下:

然而 src.zip
中結構大概為:
.
├── com
├── java
├── javax
├── launcher
└── org
複製程式碼
對比可以看到,apple
,jdk
,sun
這幾個包的的原始碼都不在其中,但是日常工作中有一些程式碼又需要檢視,或許應該想起了 openjdk
, 這幾個包中的程式碼在openjdk
基本都可以找到,我們把openjdk
程式碼下載下來,然後關聯到IDE, 豈不是爽歪歪,不用為看不到原始碼而傷心啦.
獲取 openjdk
獲取openjdk
的方法很多,比如可以直接下載原始碼包,也可以通過一些版本管理工具獲得.本文以jdk8
舉例.
- 獲取官方原始碼 通過
hg
獲取原始碼 - 通過
github
獲取,為了方便使用者,github
上面有一些同步了官方庫到github
倉庫的,比如 github.com/unofficial-…(專案接近2G, 下載時間較長)
git checkout jdk8u/jdk8u
複製程式碼
IDE 和原始碼關聯
以 idea 為例: 點選右上角的專案結構


加入目錄jdk/src/share/classes

