自从sun被oracle收购后,在oracle下载的jdk使用F5进入调试jdk的方法就不行了,这对于想看jdk的源码的小伙伴是一个暴击(oracle在编译rt.jar时去除了调试信息);

这不得不鼻屎oracle违背了java开源的初衷,虽然oracle去除了rt.jar的调试信息,我们还是可以下载带调试信息的rt.jar去替换,

当然我们自己也可以生成带调试信息的rt.jar,以下是生成步骤及使用方法;

  1、在c盘创建目录  C:\aiqing\tools\debugjdk\rt_debug;(这里在哪个盘符创建目录及目录名是什么没限制,要与下面的步骤对应就ok)

  2、把JAVA_HOME\jre\lib下的rt.jar复制到rt_debug目录解压;

  

  3、把JAVA_HOME\src.zip复制到rt_debug目录解压(src.zip就是jdk的源码)

  4、进入解压后的src目录,保留java、javax、org三个目录,其他删除

  5、在src目录中打开cmd命令行执行dir /B /S /X  C:\aiqing\tools\debugjdk\rt_debug\src\*.java > filelist.txt (这一步创建一个叫做filelist.txt的文件,这个文件存放了所有你将要编译的类的名称)

  6、创建C:\aiqing\tools\debugjdk\debug_rt\classes文件夹 (java、Javax、org三个源代码编译后存放路径)

  7、编译src下的源代码 javac -J-Xms16m -J-Xmx1024m -sourcepath C:\aiqing\tools\debugjdk\rt_debug\src -cp C:\aiqing\tools\debugjdk\rt_debug\rt.jar  -d C:\aiqing\tools\debugjdk\debug_rt\classes -g @filelist.txt

  8、cmd进入C:\aiqing\tools\debugjdk\debug_rt\classes目录,执行: jar cf0 rt_debug.jar * ;这步会生成一个rt_debug.jar

  

  9、把这个rt_debug.jar包复制到JAVA_HOME\jre\lib下

  10、把JAVA_HOME加入到eclipse中,eclipse点击window->preferences->Installed JREs,选择相应JDK,然后点击Add External JARs...,选择我们步骤9中添加的rt_debug.jar(位置在rt.jar之上)。

  

  11、链接rt_debug.jar的源码JAVA_HOME\src.zip(rt_debug也是用的src.zip中的jdk源码)

  

  12、ok,接下去就可以在jdk中遨游了。

  

  

jdk学习之如何调试jdk的更多相关文章

  1. oracle jdk和openjdk区别;idea如何加载jdk源码并调试jdk代码

    两个jdk的区别 oracle jdk是sun/oracle(甲骨文)公司的,部分jdk开源:相对比较稳定,使用的比较多. openjdk是完全开源的,据说是官方oracle唯一承认的开源版本. id ...

  2. 调试JDK源代码-一步一步看HashMap怎么Hash和扩容

    调试JDK源代码-一步一步看HashMap怎么Hash和扩容 调试JDK源代码-ConcurrentHashMap实现原理 调试JDK源代码-HashSet实现原理 调试JDK源代码-调试JDK源代码 ...

  3. eclipse调试jdk源码

    摘要 介绍使用eclipse调试jdk源码 java是一门开源的程序设计语言,喜欢研究源码的java开发者总会忍不住debug一下jdk源码.虽然官方的jdk自带了源码包src.zip,然而在debu ...

  4. eclipse如何debug调试jdk源码(任何源码)并显示局部变量

    最近要看struts2源码 仿照了一下查看jdk源码的方式 首先你要有strtus2的jar包和源码,在struts官网上下载时,选择full版本,里面会有src也就是源码了. jar导入项目,保证可 ...

  5. 跟踪调试JDK源码时遇到的问题及解决方法

    目录 问题描述 解决思路 在IntelliJ IDEA中调试JDK源码 在eclipse中调试JDK源码 总结 问题描述 最近在研究MyBatis的缓存机制,需要回顾一下HashMap的实现原理.于是 ...

  6. 如何调试JDK源代码并查看局部变量值

    如下图: 按F5进入String.startsWith,如下: 点“Edit Source Lookup Path” 附加源代码,如下图: 附加上源代码后如下: 可以看到,当鼠标放在“prefix”上 ...

  7. ddms+adt+jdk的安装及调试开发安卓

    _______ ddms+adt+jdk的安装及调试开发安卓 目录 阐述 1 1  jdk安装 1 2  sdk安装 3 3  Eclipse安装 6 4  ADT安装 10 5  Ddms使用 16 ...

  8. JDK学习---深入理解java中的HashMap、HashSet底层实现

    本文参考资料: 1.<大话数据结构> 2.http://www.cnblogs.com/dassmeta/p/5338955.html 3.http://www.cnblogs.com/d ...

  9. JDK学习---深入理解java中的LinkedList

    本文参考资料: 1.<大话数据结构> 2.http://blog.csdn.net/jzhf2012/article/details/8540543 3.http://blog.csdn. ...

随机推荐

  1. html5 视频和音频

    视频:html5支持视屏文件或者视屏流. html5使用video元素来播放视屏,支持的类型有OGG,MEPG 4,webM,但是不同的浏览器支持类型不同. src可以放置视屏文件的路径,可以使用元素 ...

  2. LoadRunner12 Java Vuser API语法举例

    // 检查点 web.reg_find("Text=\"retCode\":\"0000\"",new String[]{"FAI ...

  3. AXI4

    axis  AXI4-stream 去掉了地址项,允许无限制的数据突发传输规模: 摘自http://xilinx.eetrend.com/blog/11443

  4. Nginx CONTENT阶段 static模块

    L63-65 alias指令  syntax: alias path;# 静态文件路径  alias不会将请求路径后的路径添加到 path中 context : location; root指令 sy ...

  5. Scala常用命令

    :q    退出控制台 控制台换行    空格 + 回车

  6. BZOJ3589 动态树(树链剖分+容斥原理)

    显然容斥后转化为求树链的交.这个题非常良心的保证了查询的路径都是到祖先的,求交就很休闲了. #include<iostream> #include<cstdio> #inclu ...

  7. Dining POJ - 3281

    题意: f个食物,d杯饮料,每个牛都有想吃的食物和想喝的饮料,但食物和饮料每个只有一份 求最多能满足多少头牛.... 解析: 一道简单的无源汇拆点最大流   无源汇的一个最大流,先建立超级源s和超级汇 ...

  8. /dev/null与/dev/zero区别

    /dev/null和/dev/zero的区别 /dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着! /dev/zero,是一个输入设备,你可你用它来初始化文件.该设备无穷尽 ...

  9. Django-Ajax及跨域请求

    Ajax准备知识:json 什么是json? 定义: JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.它基于 ECMAScript (w ...

  10. 2018.9青岛网络预选赛(H)

    传送门:Problem H https://www.cnblogs.com/violet-acmer/p/9664805.html 题意: BaoBao在一条有刻度的路上行走(哈哈,搞笑),范围为 [ ...