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%jrelib
找到【rt.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 .
t.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%jrelibendorsed
下。如果没有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
参考 https://blog.csdn.net/u010407050/article/details/76690478