转自:http://www.douban.com/note/211369821/
学习jdk源码时使用--
学习java最好的办法就是看jdk源代码,面对浩瀚的jdk(光源码就有40M多,比一个大型网站的源码都多)从何入手呢,要是能单步调试跟进到jdk源码里并且能查看其中的局部变量最好了。
可惜的是sun提供的jdk并不能查看运行中的局部变量,需要重新编译一下rt.jar。
废话少说,下面是编译jdk的具体步骤:
1.把C:\java\jdk1.6.0_10\src.zip解压到C:\java\jdk1.6.0_10\src
2.执行命令 dir /B /S /X C:\java\jdk1.6.0_10\src\*.java > fileList-jdk1.6.0_10-src.txt 生成一个包含所有源文件列表的txt文档
3.最重要的一步,运行以下命令
c:\Java\jdk1.6.0_10\bin\javac
-verbose
-nowarn
-g
-source 1.6
-target 1.6
-J-Xms512m
-J-Xmx1024m
-bootclasspath c:\Java\jre6\lib\rt.jar;c:\Java\jre6\lib\jce.jar;c:\Java\jre6\lib\jsse.jar;c:\Java\jre6\lib\resources.jar;c:\Java\jre6\lib\charsets.jar;c:\Java\jre6\lib\deploy.jar
-sourcepath c:\Java\jdk1.6.0_10\src
-classpath c:\Java\jdk1.6.0_10\src
-d compiled
@fileList-jdk1.6.0_14-src.txt
其中-d complied是要新建的文件夹,用来存放编译生成的class文件,@fileList-jdk1.6.0_14-src.txt就是刚才生成的文本文件,这个步骤大概要执行2-3分钟左右。
4. 执行完毕,所有新编译后的class文件都在complied文件夹中,重新打包生成rt.jar或者覆盖原来rt.jar中的类,生成新的rt.jar。最后把新生成的rt.jar放到c:\Java\jre6\lib和C:\java\jdk1.6.0_10\jre\lib覆盖原有的rt.jar,覆盖之前最好备份一下,这样就大功告成了。
需要说明的几点:
A. java最好安装在某盘的根目录下(如c:\Java\jdk1.6.0_10),不要放在program files下,因为这个文件夹名有个空格,执行javac命令时有可能产生不必要的麻烦。
B. 如果想在eclipse中跟踪调试,需要在Windows-Preferences-Java-Installed JRE下,选择安装的jdk,点edit,然后在列出的jre system libraries列表中选择rt.jar,设置其中的Source attachment为C:\java\jdk1.6.0_10\src.zip。
参考: http://www.softwareengineeringsolutions.com/thoughts/Java-Debug-Build.htm
可惜的是sun提供的jdk并不能查看运行中的局部变量,需要重新编译一下rt.jar。
废话少说,下面是编译jdk的具体步骤:
1.把C:\java\jdk1.6.0_10\src.zip解压到C:\java\jdk1.6.0_10\src
2.执行命令 dir /B /S /X C:\java\jdk1.6.0_10\src\*.java > fileList-jdk1.6.0_10-src.txt 生成一个包含所有源文件列表的txt文档
3.最重要的一步,运行以下命令
c:\Java\jdk1.6.0_10\bin\javac
-verbose
-nowarn
-g
-source 1.6
-target 1.6
-J-Xms512m
-J-Xmx1024m
-bootclasspath c:\Java\jre6\lib\rt.jar;c:\Java\jre6\lib\jce.jar;c:\Java\jre6\lib\jsse.jar;c:\Java\jre6\lib\resources.jar;c:\Java\jre6\lib\charsets.jar;c:\Java\jre6\lib\deploy.jar
-sourcepath c:\Java\jdk1.6.0_10\src
-classpath c:\Java\jdk1.6.0_10\src
-d compiled
@fileList-jdk1.6.0_14-src.txt
其中-d complied是要新建的文件夹,用来存放编译生成的class文件,@fileList-jdk1.6.0_14-src.txt就是刚才生成的文本文件,这个步骤大概要执行2-3分钟左右。
4. 执行完毕,所有新编译后的class文件都在complied文件夹中,重新打包生成rt.jar或者覆盖原来rt.jar中的类,生成新的rt.jar。最后把新生成的rt.jar放到c:\Java\jre6\lib和C:\java\jdk1.6.0_10\jre\lib覆盖原有的rt.jar,覆盖之前最好备份一下,这样就大功告成了。
需要说明的几点:
A. java最好安装在某盘的根目录下(如c:\Java\jdk1.6.0_10),不要放在program files下,因为这个文件夹名有个空格,执行javac命令时有可能产生不必要的麻烦。
B. 如果想在eclipse中跟踪调试,需要在Windows-Preferences-Java-Installed JRE下,选择安装的jdk,点edit,然后在列出的jre system libraries列表中选择rt.jar,设置其中的Source attachment为C:\java\jdk1.6.0_10\src.zip。
参考: http://www.softwareengineeringsolutions.com/thoughts/Java-Debug-Build.htm