Java在Eclipse中除錯無法獲取JDK原始碼變數的解決辦法
1.問題描述
在Eclipse中除錯jdk原始碼時,變數無法顯示並提示說“key cannot be resolved to a variable”。
這是因為在JDK中,sun對rt.jar
中的類編譯時,去除了除錯資訊。
2.解決方法
1.在D盤新建資料夾【 jdk 】,然後在資料夾裡面分別建立兩個資料夾【jdk_src】
(原始碼)和【jdk_debug 】
(編譯檔案)。
2.從%JAVA_HOME%
路徑下找到【src.zip】
原始碼原始碼壓縮包,解壓至D:/jdk/jdk_src
目錄中,並只保留【java
,javax
,org】
三個資料夾。
3.從%JAVA_HOME%\jre\lib
r【t.jar】
,將它拷貝到D:/jdk
資料夾。
4.開啟DOS命令視窗,用命令cd
命令進入D:/jdk
資料夾,然後執行命令 【dir /B /S /X .\jdk_src\*.java > .\filelist.txt 】
完成後會在D:/jdk
目錄生成filelist.txt
檔案,裡面為待編譯的檔案路徑*/*.java
。
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
。
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
新增原始檔。
3.操作截圖
圖片來源於https://blog.csdn.net/u010407050/article/details/76690478