jdk学习之如何调试jdk
自从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的更多相关文章
- oracle jdk和openjdk区别;idea如何加载jdk源码并调试jdk代码
两个jdk的区别 oracle jdk是sun/oracle(甲骨文)公司的,部分jdk开源:相对比较稳定,使用的比较多. openjdk是完全开源的,据说是官方oracle唯一承认的开源版本. id ...
- 调试JDK源代码-一步一步看HashMap怎么Hash和扩容
调试JDK源代码-一步一步看HashMap怎么Hash和扩容 调试JDK源代码-ConcurrentHashMap实现原理 调试JDK源代码-HashSet实现原理 调试JDK源代码-调试JDK源代码 ...
- eclipse调试jdk源码
摘要 介绍使用eclipse调试jdk源码 java是一门开源的程序设计语言,喜欢研究源码的java开发者总会忍不住debug一下jdk源码.虽然官方的jdk自带了源码包src.zip,然而在debu ...
- eclipse如何debug调试jdk源码(任何源码)并显示局部变量
最近要看struts2源码 仿照了一下查看jdk源码的方式 首先你要有strtus2的jar包和源码,在struts官网上下载时,选择full版本,里面会有src也就是源码了. jar导入项目,保证可 ...
- 跟踪调试JDK源码时遇到的问题及解决方法
目录 问题描述 解决思路 在IntelliJ IDEA中调试JDK源码 在eclipse中调试JDK源码 总结 问题描述 最近在研究MyBatis的缓存机制,需要回顾一下HashMap的实现原理.于是 ...
- 如何调试JDK源代码并查看局部变量值
如下图: 按F5进入String.startsWith,如下: 点“Edit Source Lookup Path” 附加源代码,如下图: 附加上源代码后如下: 可以看到,当鼠标放在“prefix”上 ...
- ddms+adt+jdk的安装及调试开发安卓
_______ ddms+adt+jdk的安装及调试开发安卓 目录 阐述 1 1 jdk安装 1 2 sdk安装 3 3 Eclipse安装 6 4 ADT安装 10 5 Ddms使用 16 ...
- JDK学习---深入理解java中的HashMap、HashSet底层实现
本文参考资料: 1.<大话数据结构> 2.http://www.cnblogs.com/dassmeta/p/5338955.html 3.http://www.cnblogs.com/d ...
- JDK学习---深入理解java中的LinkedList
本文参考资料: 1.<大话数据结构> 2.http://blog.csdn.net/jzhf2012/article/details/8540543 3.http://blog.csdn. ...
随机推荐
- Cenos7 添加service,开机启动
本地有一个 data-service.jar 1. 编写启动脚本 data-service-start [root@iz2ze0fq2isg8vphkpos5sz shell]# more data ...
- const,static,volatile关键字的作用
const关键字: 1.欲阻止一个变量被改变,可使用const,在定义该const变量时,需先初始化,以后就没有机会改变他了: 2.对指针而言,可以指定指针本身为const,也可以指定指针所指的数据为 ...
- BZOJ5343[Ctsc2018]混合果汁——主席树+二分答案
题目链接: CTSC2018混合果汁 显然如果美味度高的合法那么美味度低的一定合法,因为美味度低的可选方案包含美味度高的可选方案. 那么我们二分一个美味度作为答案然后考虑如何验证? 选择时显然要贪心的 ...
- Luogu4221 WC2018州区划分(状压dp+FWT)
合法条件为所有划分出的子图均不存在欧拉回路或不连通,也即至少存在一个度数为奇数的点或不连通.显然可以对每个点集预处理是否合法,然后就不用管这个奇怪的条件了. 考虑状压dp.设f[S]为S集合所有划分方 ...
- AC自动机-HDU2896-模板题
http://acm.hdu.edu.cn/showproblem.php?pid=2896 另一道AC自动机的模板题,不过这题需要记录一下具体的匹配情况. /*------------------- ...
- linq 分组取各组最大值
static List<User> list1 = new List<User>() { new User(){id=1,name="张三"}, new U ...
- MVC 多语言
最近项目需要用到多语言. 研究了一下,也参考了很多技术文章. 这里贴一下参考地址:http://www.cnblogs.com/unintersky/p/3969612.html 主要步骤我这里简述一 ...
- Android 判断是否有声音在播放
在Android中,我们可以通过AudioManager来判断是否有声音在播放. 实例1: 源码地址: PhoneWindowManager.java (frameworks\base\policy\ ...
- 【Luogu1937】仓配置(贪心,线段树)
[Luogu1937]仓配置 题面 直接找洛谷把... 题解 很明显的贪心吧 按照线段的右端点为第一关键字,左端点第二关键字排序 然后线段树维护区间最小就可以啦 #include<iostrea ...
- [luogu2280][bzoj1218][HNOI2003]激光炸弹
题目描述 一种新型的激光炸弹,可以摧毁一个边长为R的正方形内的所有的目标.现在地图上有n(N<=10000)个目标,用整数Xi,Yi(其值在[0,5000])表示目标在地图上的位置,每个目标都有 ...