java 有很强大的调试工具,我们有很多时候调试到jdk类的时候,发现看到不到局部变量,成员变量,值等情况,是因为jre发布的时候里面去掉了很多的调试信息,因为这些调试信息会占用内存,这是java为了提高性能,默认情况下去掉了这些调试信息。对于我们程序员,我们为了很方便的提高自己的水平和能力,我们很有必要再次编译jdk的src.zip下面的原代码,方便我们在eclipse IDE工具里面调试jdk的代码。
1 首先我们拷贝 JAVA_HOME\src.zip包到 某个地方,比方说 拷贝到
D:\srctmp\
2 解压D:\srctmp\src.zip 到 D:\srctmp\jdk1.6.0_20-src
3 列出 D:\srctmp\jdk1.6.0_20-src\下面的java文件到某个文件
dir /B /S /X d:\srctmp\jdk1.6.0_20-src\*.java > fileList-jdk1.6.0_20-src.txt
D:\srctmp>dir /B /S /X d:\srctmp\jdk1.6.0_20-src\*.java > fileList-jdk1.6.0_20-src.txt
4 编译源文件:
执行如下命令
D:\srctmp>"D:\dev\Java\jdk1.6.0_20\bin\javac" -verbose -nowarn -g -source 1.6 -target 1.6 -J-Xms512m -J-Xmx1024m -bootclasspath "D:\dev\Java\jdk1.6.0_20\jre\lib\rt.jar";D:\dev\Java\jdk1.6.0_20\jre\lib\jce.jar;D:\dev\Java\jdk1.6.0_20\jre\lib\jsse.jar;D:\dev\Java\jdk1.6.0_20\jre\lib\resources.jar;D:\dev\Java\jdk1.6.0_20\jre\lib\charsets.jar;D:\dev\Java\jdk1.6.0_20\jre\lib\deploy.jar -sourcepath jdk1.6.0_20-src -classpath jdk1.6.0_20-src -d out @fileList-jdk1.6.0_20-src.txt
注意 加入 -bootclasspath 确保我们可以正确的编译原代码。
编译后.class文件生成在
D:\srctmp\out 目录下面
5 拷贝 JAVA_HOME\jre\lib\rt.jar 到d:\srctmp\ 目录下面
用jar 命令解压rt.jar 到d:\srctmp\rt
jar -xvf rt.jar
6 将out下面编译的.class文件 全部拷贝到rt目录下进行覆盖,
7 重新打包rt目录
jar cvf rt.jar ./
8 拷贝到新的rt.jar 到 JAVA_HOME\jre\lib\目录,覆盖之前先进行备份。
完毕
原文参考 http://www.softwareengineeringsolutions.com/thoughts/Java-Debug-Build.htm