JDK8源码阅读环境配置

说明

  • 环境

jdk 版本:1.8.0_381
系统:macos 13.5.1 Intel

  • 目的

学习 jdk8 源码,并能自定注释。

新建 java 工程

在 idea 中新建 java 工程,注意并非 maven 工程。
如下图:
image.png
完成后,如下图:
image.png

配置源码

src.zip

找到 jdk 安装目录下的 src.zip 文件,该文件即为源码压缩包。
如下图:
image.png

复制到 idea

解压 src.zip 压缩包,并将解压后的所有文件复制到新建的 java 工程。
解压后的文件如下图所示:
image.png
复制到 idea 耗时比较长,须耐心等待。注意不要直接通过finder(资源管理器)复制到对应的目录,因为在 idea 中复制会自动匹配包路径。
复制完成后如下图所示:
image.png

解决 tools 不存在

测试程序如下:

public class Main {public static void main(String[] args) {System.out.println("Hello world!");Map<String, Object> map = new HashMap<>();map.put("name", "jay");String name = (String) map.get("name");System.out.println(name);}
}

运行后报错:

java: 程序包com.sun.tools.javac.api不存在

配置 Libraries,进入 File》Project Structure,选择 jdk 安装目录下的 tools.jar 文件,如下图所示:
image.png
点 OK 后,再次运行测试程序,没有报错了。

解决 debug 进入 jdk 相关类

debug 模式下,通过 debug 进去 HashMap 断点,但是进不去,这是因为 idea 的限制。需要进入 Settings 设置。
如下图所示:
image.png
去掉如上复选框,点击 OK 即可。

配置源码路径

此时 debug 时,比如进入 HashMap 源码,进入的还是 jdk 的源码,为只读模式,不能添加自己的注释。
打开项目配置,发现 SDKs》Sourcespath 配置的还是 jdk 安装目录下的 src.zip 文件,需要将其改成我们解压后(新建的 java 项目中)的目录。
先删除之前的 src.zip 引用,再添加 java 项目对应的目录。
配置完成后如下图:
image.png
点击 OK 后,再次 debug 测试程序,HashMap 对应的就是我们自己 java 项目中的代码了。
image.png

完成

现在可以愉快地阅读源码了,并且可以写上自己的注释了。
建议将当的 java 项目上传到自己的 git 仓库。

可以看到,如果进入的 HashMap 在 src.zip 压缩包文件,会有一个感叹号,表示当前文件只读。
但是此时如果点击左上角定位按钮,还是会定位到 jdk 的源码中,这个并不影响我们 debug 和写注释,后续如果我解决了此问题,会及时更新到这里。大佬们如果知道解决方法,欢迎留言,感谢~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/111734.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux安装python3.x版本

linux安装python3.x版本 ① 安装依赖环境② 下载python版本包③ 安装python④ 建立软链接⑤ 加入path⑥ 验证 官网版本地址&#xff1a;https://www.python.org/ftp/python/ ① 安装依赖环境 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel…

第7章 【MySQL】B+树索引的使用

InnoDB存储引擎的B树索引&#xff1a; 每个索引都对应一棵 B 树&#xff0c; B 树分为好多层&#xff0c;最下边一层是叶子节点&#xff0c;其余的是内节点。所有 用户记录都存储在 B 树的叶子节点&#xff0c;所有 目录项记录 都存储在内节点。InnoDB 存储引擎会自动为主键&a…

06-Redis缓存高可用集群

上一篇&#xff1a;05-Redis高可用集群之水平扩展 1.集群方案比较 哨兵模式 在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态&#xff0c;如果master节点异常&#xff0c;则会做主从切换&#xff0c;将某一台slave作为master&#xff0c…

Seata四种事务模式AT、TCC、SAGA 、 XA详解

文章目录 一、 GlobalTransactional一、AT模式1、原理2 、优缺点3、实现 二、TCC模式1、原理2 、优缺点3、实现 三、SAGA模式1 、原理2 、优缺点3 、实现 四、XA模式1 、原理2 、优缺点3、 实现 五、 四种模式对比 我们知道Seata是一款开源的分布式事务解决方案&#xff0c;致力…

WebGoat搭建和Yakit学习

环境搭建 jdk版本&#xff1a;openjdk version "17.0.5“ WebGoat版本&#xff1a;webgoat-server-8.1.0.jar 环境不同有很大可能不能搭建成功 运行命令&#xff1a;java -jar webgoat-server-8.1.0.jar --server.port8888 --server.address192.168.142.131 搭建完成后…

电脑网速慢怎么解决?推荐这3个方法

在数字化时代&#xff0c;快速的互联网连接对于工作和娱乐都至关重要。然而&#xff0c;有时候我们可能会遇到电脑网速慢的问题&#xff0c;这会影响我们的效率和体验。可是电脑网速慢怎么解决呢&#xff1f;本文将介绍解决电脑网速慢的3个方法&#xff0c;帮助你提升网络连接的…

面经pc端项目

创建项目 安装脚手架-----创建项目------选择自定义 sass基础语法 https://www.sass.hk/ sass语法有两个:sass(旧) scss(新) 1.scss语法 和less语法类似,支持嵌套,支持变量… scss: $变量名 less: @变量名 $color:orange; .box{width: 400px;height: 400px;borde…

如何使用反 CSRF 令牌保护您的网站和 Web 应用程序

防止跨站点请求伪造攻击 (CSRF/XSRF)的最常见方法是使用反 CSRF 令牌&#xff0c;该令牌只是一个唯一值集&#xff0c;然后由 Web 应用程序需要。CSRF 是一种客户端攻击&#xff0c;可用于将用户重定向到恶意网站、窃取敏感信息或在用户会话中执行其他操作。幸运的是&#xff0…

python萌新爬虫学习笔记【建议收藏】

文章目录 1. 如何何请求解析url2. 如何获取标签里面的文本3. 如何解析JSON格式4. 如何添加常用的header5. 如何合并两个div6. 如何删除html dom的部分结构7. 如何一次性获取所有div标签里的文本8. python爬虫如何改变响应文本字符集编码9. 如何进行字符集转码11. response.text…

多输入多输出 | MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向量机多输入多输出

多输入多输出 | MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向量机多输入多输出 目录 多输入多输出 | MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向量机多输入多输出预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 MATLAB实现PSO-LSSVM粒子群优化最小二乘支持向…

华为云云服务器云耀L实例评测 | 智能不卡顿:如何实现流畅的业务运行

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

flink的几种常见的执行模式

背景 在运行flink时&#xff0c;我们经常会有几种不同的执行模式&#xff0c;比如在IDE中启动时&#xff0c;通过提交到YARN上&#xff0c;还有通过Kebernates启动时&#xff0c;本文就来记录一下这几种模式 flink的几种执行模式 flink嵌入式模式&#xff1a; 这是一种我们在…