JAVA虚拟机学习2---OpenJDK的Java源文件的调试

前言:

《JAVA虚拟机学习1---OpenJDK的编译》编译好debug文件的基础,我们来进行Open jdk源代码中Java源代码在Eclipse上的调试。

1获得jdk8的主要文件路径

 1.1 本机java8的源代码根目录
 /home/sksweet/work/code/jdk8u
 1.2 java8的源文件目录
 /home/sksweet/work/code/jdk8u/jdk/src/share/classes
 1.3 java8的编译产品目录
 /home/sksweet/work/code/jdk8u/build/linux-x86_64-normal-server-release/
 1.4 java8编译生成的jdk镜像目录
 /home/sksweet/work/code/jdk8u/build/linux-x86_64-normal-server-release/images/j2sdk-image
 1.5 java8编译生成的jre镜像目录
 /home/sksweet/work/code/jdk8u/build/linux-x86_64-normal-server-release/images/j2re-image


2 设置.bashrc

配置编译生成的Java运行环境到用户shell环境中,设置1.4节中java8编译生成的jdk镜像目录。完了执行命令,更新文件,测试一下java目录是否已经变成编译出的java8版本。在.bashrc文件中加入

$gedit ~/.bashrc
JAVA_HOME=/home/sksweet/work/code/jdk8u/build/linux-x86_64-normal-server-release/images/j2sdk-image
CLASSPATH=.:${JAVA_HOME}/lib
PATH=${JAVA_HOME}/bin:$PATH

更新

$source ~/.bashrc
$java -version


好了,看到第二行中2018-05-12字样,就说明已经在使用本地编译的java运行库了。

或者,如果你的机器上像我一样,有多个jdk 版本的话,就不能这么写死,换另外一种方法,不把配置写死到.bashrc中,当然仅限于Linux。使用Linux的update-alternatives命令,装入我们自行编译的 1.4节java8编译生成的jdk镜像目录可执行文件。

$sudo update-alternatives --install /usr/bin/java java /home/sksweet/work/code/jdk8u/build/linux-x86_64-normal-server-release/images/j2sdk-image/bin/java 300
$sudo update-alternatives --install /usr/bin/javac javac /home/sksweet/work/code/jdk8u/build/linux-x86_64-normal-server-release/images/j2sdk-image/bin/javac 300
$sudo update-alternatives --install /usr/bin/javah javah /home/sksweet/work/code/jdk8u/build/linux-x86_64-normal-server-release/images/j2sdk-image/bin/javah 300
$sudo update-alternatives --install /usr/bin/javadoc javadoc /home/sksweet/work/code/jdk8u/build/linux-x86_64-normal-server-release/images/j2sdk-image/bin/javadoc 300

这样我们就可以使用 update-alternatives灵活切换版本,像我机器上有直接安装的openjdk7,8,再加上自己编译加进去的openJDK8.

使用命令进行切换,要使用哪个命令就换哪个命令:

$ sudo update-alternatives --config java

像目前机器上使用的默认java命令的是第2项的openjdk7,现在选择第1项目-自编译的openjdk8,再使用java -version看版本,我们已经切换成功了,在Linux下就是这么任性。。。


3 eclipse 上的设置

打开eclipse,

3.1 windows-Prefences-Java-"Installed JREs",在右边出现的框中,点击右边的"Add.."


弹出的框架中,点击"stand VM"。在弹出“Edit JRE”的框架中,选择"Directory.."


填充入1.4节中java8编译生成的jdk镜像目录

/home/sksweet/work/code/jdk8u/build/linux-x86_64-normal-server-release/images/j2sdk-image

第二行起个名,填入jdk1.8,在加载好的文件列表中,选择rt.jar的文件,然后点击右边的Source Attachment,选择"External File",


将1.4节中java8编译生成的jdk镜像目录下的源文件选中

/home/sksweet/work/code/jdk8u/build/linux-x86_64-normal-server-release/images/j2sdk-image/src.zip


或者传统的src.zip并不是全部源文件,想看sun公司目录全部源文件的,选"Extenal Folder",使用1.2节 java8的源文件目录

/home/sksweet/work/code/jdk8u/jdk/src/share/classes


两者选一,点击ok->finish.

3.2 windows-Prefences-Java-Compiler

在右边compiler compliance level选择1.8,点击Apply



3.3 一定要重启。

后面就可以在jdk源代码里边打断点了。新建一个项目,里边写上hashmap的代码,


然后F3进入hashmap源代码


在putVal方法里,打入4处断点,debug运行,可以看到在eclipse里,刚才在puVal方法里,4处断点已经全部生效了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值