JDK1.8源码分析03之idea搭建源码阅读环境
序言:上一节说了阅读源码的顺序,有了一个大体的方向,咱们就知道该如何下手。接下来,就要搭建一个方便阅读源码及debug的环境。有助于跟踪源码的调用情况。
目前新开发的项目, 大多数都是基于JDK1.8开发,所以我选择该版本进行源码分析。
JDK1.8版本号:jdk1.8.0_151
一. JDK1.8的src在哪里?
找到JDK安装包所在目录,会看到src.zip的压缩包,这里面就是JDK的源码,如下图。
二. idea搭建步骤
01. 新建一个简单的Java工程
打开idea,菜单栏File => Project,出现如下图
在点Next, 选个初始化一个Hello word应用,出现如下图:
再点Next, 输入项目名, 及保存路径:
最后出现的界面如下:
02. 把源码src.zip解压到该工程下的src目录下
你以为这样就万事大吉了吗?NO, NO, NO
我导入后,运行Main.java文件里面,看能不能正常运行起来,结果在编译的时候,出现了各种ERROR, 找不到xxx类等问题。
看着这么多错误,我有打算放弃的念头。但是,针对技术,我是一个很倔强的人。
索性思考了一番,这不就是我没遇到过的问题吗?如果解决了,那不是又增长了知识。
开始了我的疯狂自虐操作。
比如 找不到xxx类,可以去网上找相关的类,添加进去就好。只要不是与项目JDK有冲突问题,就都还好。
索性最后问题都被我逐一解决了,最终运行成功。
三. 搭建过程中问题总结
各种ERROR解决思路,为以后的朋友们铺平道路
我是一个修路工人。
问题1:缺少com.sun.tools包
解决思路:File => Project structure => Libraries 把jdk路径下的lib包添加到工程中,如下图:
问题2:缺少sun.awt.UNIXToolkit 和 sun.font.FontConfigManager这两个类
解决思路: 在src的目录下手动添加这两个类
问题3:debug的时候,出现如下,调用的src.zip中的文件
解决思路: 排除掉src.zip文件,按下图操作即可。
问题4:debug的时候,误点Alternative source availble for the class xxxx 的disable
解决思路: 打开setting => Debugger, 如下图 选中该选项。
丑媳妇总要见公婆的。源码代码已经提交到github上, 欢迎大家fork和关注。
github: https://github.com/raysonfang/jdk1.8-source-analysis
刚起步,欢迎吐槽。争取打造成JDK源码分析系列资源合集,想学习JDK源码的, 就可以自行下载。
JDK1.8源码分析03之idea搭建源码阅读环境的更多相关文章
- 【转】jQuery源码分析-03构造jQuery对象-源码结构和核心函数
作者:nuysoft/高云 QQ:47214707 EMail:nuysoft@gmail.com 毕竟是边读边写,不对的地方请告诉我,多多交流共同进步.本章还未写完,完了会提交PDF. 前记: 想系 ...
- jQuery源码分析-03构造jQuery对象-源码结构和核心函数
3. 构造jQuery对象 3.1源码结构 先看看总体结构,再做分解: (function( window, undefined ) { var jQuery = (function() { // 构 ...
- DolphinScheduler1.3.2源码分析(二)搭建源码环境以及启动项目
前置依赖组件安装 找一台服务器,或者本地的虚拟机,然后在服务器上安装好jdk,zookeeper,mysql. 1.源码调试环境搭建 源码环境搭建可以参考DolphinScheduler官方网站的开发 ...
- NIO 源码分析(03) 从 BIO 到 NIO
目录 一.NIO 三大组件 Channels.Buffers.Selectors 1.1 Channel 和 Buffer 1.2 Selector 1.3 Linux IO 和 NIO 编程的区别 ...
- Tomcat源码分析一:编译Tomcat源码
Tomcat源码分析一:编译Tomcat源码 1 内容介绍 在之前的<Servlet与Tomcat运行示例>一文中,给大家带来如何在Tomcat中部署Servlet应用的相关步骤,本文将就 ...
- Android源码分析(十一)-----Android源码中如何引用aar文件
一:aar文件如何引用 系统Settings中引用bidehelper-1.1.12.aar 文件为例 源码地址:packages/apps/Settings/Android.mk LOCAL_PAT ...
- 源码分析系列1:HashMap源码分析(基于JDK1.8)
1.HashMap的底层实现图示 如上图所示: HashMap底层是由 数组+(链表)+(红黑树) 组成,每个存储在HashMap中的键值对都存放在一个Node节点之中,其中包含了Key-Value ...
- angular源码分析:angular源代码的获取与编译环境安装
一.安装git客户端 1.windows环境推荐使用TortoiseGit. 官网地址:http://tortoisegit.org 下载地址:http://tortoisegit.org/downl ...
- Spring加载流程源码分析03【refresh】
前面两篇文章分析了super(this)和setConfigLocations(configLocations)的源代码,本文来分析下refresh的源码, Spring加载流程源码分析01[su ...
随机推荐
- 设计模式-模块方法模式(TemplateMethod)
模块方法模式是行为模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为. UML图: 具体代码: /** * 抽象-模块方法模式核心 */ ...
- Codeforces 730A:Toda 2(multiset模拟)
http://codeforces.com/problemset/problem/730/A 题意:有n个人打天梯,想让这n个人的分数相同,每场比赛必须有2-5个人参赛,参赛的人会降低一分,问一个合理 ...
- 《ASP.NET Core 高性能系列》致敬伟大的.NET斗士甲骨文!
写在开始 三年前,曾写过一篇文章:从.NET和Java之争谈IT这个行业,当时遭到某些自认为懂得java就了不起的Javaer抨击, 现在可以致敬伟大的.NET斗士甲骨文了 (JDK8以上都需要收费, ...
- Linux命令学习-tar命令
Linux中,tar命令的全称是tape archive,主要作用是压缩和解压文件. 参数说明: -c 创建新的压缩档案 -x 解压档案 -t 列出压缩档案的内容 -z 使用gzip来解压和压缩,文件 ...
- 【深入浅出-JVM】(4):编译 jdk
环境 mac,xcode,jdk8,openjdk,autoconf 步骤 安装autoconf brew install autoconf 下载openjdk源码 git clone https:/ ...
- 彻底透析SpringBoot jar可执行原理
文章篇幅较长,但是包含了SpringBoot 可执行jar包从头到尾的原理,请读者耐心观看.同时文章是基于SpringBoot-2.1.3进行分析.涉及的知识点主要包括Maven的生命周期以及自定 ...
- C#开发中常用的加密算法总结
相信很多人在开发过程中经常会遇到需要对一些重要的信息进行加密处理,今天给大家分享我个人总结的一些加密算法: 常见的加密方式分为可逆和不可逆两种方式 可逆:RSA,AES,DES等 不可逆:常见的MD5 ...
- C语言指针专题——指针怎么就很灵活?
最近在研读 C Primer pkus(第五版)中文版,老外写的还是很经典的,推荐给朋友们,购买地址:C primer plus 5版中文版购买 另外再推荐两本书: 1. 2017年9月全国计算机二级 ...
- Linux系统-CENTOS7使用笔记
复制文件夹下的所有文件到另一个文件夹下 cp ~/dirname/* ~/otherdirname 解压rar文件 PS:在liunx下原本是不支持rar文件的,需要安装liunx下的winrar版本 ...
- MyBatis从入门到精通:第一章的pom.xml文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...