序言:上一节说了阅读源码的顺序,有了一个大体的方向,咱们就知道该如何下手。接下来,就要搭建一个方便阅读源码及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源码的, 就可以自行下载。

最新文章

  1. Code First Migrations
  2. Unity3D 脚本手册
  3. js判断当前的访问是手机/电脑
  4. java实现单链表反转
  5. iOS之 随笔Xcode7的lipo
  6. android调用JPush获取手机的注册码(Cordova环境)
  7. java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转)
  8. 谁该吃药了(线性判别法LDA小故事)
  9. 开源框架是如何通过JMX来做监控的(一) - JMX简介和Standard MBean
  10. 3.0、Android Studio构建和运行应用
  11. synchronized修饰方法和代码块的区别
  12. IOS开发之尺寸
  13. php中header函数参数的Cache-control的使用方法
  14. C#开启异步 线程的四种方式
  15. linux程序一般设置
  16. day4 linux安装python
  17. MGR架构 ~ 节点的维护相关问题
  18. linux的/etc/profile环境变量设置不生效【原创】
  19. windows 上搭建gitblit
  20. .NetCore 分页控件实现原理处理以及条件分页处理

热门文章

  1. golang切片和数组的区别
  2. C++屌屌的观察者模式-同步回调和异步回调
  3. CentOS 操作防火墙
  4. Python之Pandas库学习(二):数据读写
  5. ZOJ 3795:Grouping(缩点+最长路)
  6. 基础数据类型,格式化输出,以及for循环的使用
  7. Git使用小技巧之挑拣合并
  8. java unicode补充字符带来的码点和代码单元问题
  9. ~~核心编程(二):面向对象——类&属性~~
  10. 在阿里云上搭建Spring Initializr服务器。