調試jdk源碼時,變量沒法顯示提示說「key cannot be resolved to a variable」,爲何呢?由於在JDK中,sun對rt.jar
中的類編譯時,去除了調試信息。java
解決方法以下app
注意:若是你要編譯jdk1.8的源碼,若是與系統環境變量jdk版本不一致,會產生以下錯誤eclipse
錯誤: 程序包已存在於另外一個模塊中: java.desktop package java.applet;debug
1.在你的D:
盤新建jdk1.8_source
文件夾(個人目錄D:\jdk\jdk1.8_source
),而後在文件夾裏面分別建立兩個文件夾jdk_src
(存放源碼)和jdk_debug
(存放編譯結果文件)。調試
2.從%JAVA_HOME%
路徑下找到src.zip
源碼源碼壓縮包,解壓至D:/jdk/jdk_src
目錄中,並只保留java
,javax
,org
三個文件夾。code
3.從%JAVA_HOME%\jre\lib
找到rt.jar
,將它拷貝到D:/jdk
文件夾。blog
4.打開DOS命令窗口,用命令cd
命令進入D:/jdk
文件夾,而後執行命令dir /B /S /X .\jdk_src\*.java > .\filelist.txt
,完成後會在D:/jdk
目錄生成filelist.txt
文件,裏面爲待編譯的文件路徑*/*.java
。ip
5.執行命令javac -J-Xms16m -J-Xmx1024m -sourcepath .\jdk_src -cp .\rt.jar -d .\jdk_debug -g @.\filelist.txt >> .\log.txt 2>&1
會編譯filelist.txt
文件中列出的*.java
源文件,編譯的*.class
文件會放入D:/jdk/jdk_debug
文件夾,同時編譯過程當中會在D:/jdk
生成log.txt
文件。源碼
6.執行cd命令切換到D:/jdk/jdk_dug
,而後執行jar cf0 rt_debug.jar *
將*.class
文件打成jar
,打包完成後會在D:/jdk/jdk_debug
目錄中生成rt_debug.jar
。it
7.把這個生成的rt_debug.jar
包複製到%JDK_HOME%\jre\lib\endorsed
下。若是沒有endorsed目錄,本身建立一下。
8.在eclipse裏面找到Window->Installed JRES
,選擇jdk
,點擊Edit
,而後點擊Add External jars
,選擇剛纔建立的rt_debug.jar
導入,而後把rt_debug.jar
移動到rt.jar的前面,最後選中rt_debug.jar
,點擊Source Attachment
選擇%JAVA_HOME%/jdk/src.zip
添加源文件。