JDK1.8源码环境搭建介绍

news2025/2/3 17:56:15

目录

一、环境说明

1.1 JDK 1.8

1.2 IDEA

二、搭建过程说明

2.1 创建Java工程

2.2 源码准备

2.2.1 查找源码

2.2.2 解压源码到工程中

2.3 更新SDK

2.3.1 更新工程SDK

2.3.1.1 新建SDK

2.3.1.2 更新工程SDK

2.4 测试

2.4.1 解决报错问题

2.4.1.1 解决 sun.awt.UNIXToolkit 找不到

2.4.1.2 解决 sun.font.FontConfigManager 找不到

2.4.1.3 解决 com.sun.tools 报红

2.4.2 调大IDEA工具编译内存

2.4.3 运行测试用例


一、环境说明

1.1 JDK 1.8

需要安装JDK1.8版本,具体的JDK环境安装和环境变量配置,这里就不多说了,作为Java开发人员,应当是必备的技能。

1.2 IDEA

需要一个IDEA环境,可以使用Eclipse,IntelliJ IDEA等,具体安装这里也不讲,作为一个开发人员,开发环境应该也是必备技能。

二、搭建过程说明

2.1 创建Java工程

就是创建一个简单的Java 工程,然后初始化简单的Java结构目录即可。

2.2 源码准备

2.2.1 查找源码

查找你的Java 安装目录,比如我的是在这里:C:\Program Files\Java\jdk1.8.0_181

然后找到该目录下的src.zip包,如下图:

2.2.2 解压源码到工程中

解压src.zip 压缩包的内容到刚才新建的工程的src目录下

2.3 更新SDK

2.3.1 更新工程SDK

2.3.1.1 新建SDK

2.3.1.2 更新工程SDK

2.4 测试

新建测试包,然后新建测试类,如下图:

package test;

/**
 * @author ningzhaosheng
 * @date 2024/1/31 21:59:46
 * @description
 */
public class Test {
    public static void main(String[] args) {
        System.out.println("测试我的jdk源码");
    }
}

2.4.1 解决报错问题

2.4.1.1 解决 sun.awt.UNIXToolkit 找不到

访问OpenJDK官网:OpenJDK Mercurial Repositories

然后在官网找到该Java类,具体查找方式和步骤如下图所示:

然后在我们的工程中新建目录,拷贝考Java 类进去。

如下图:

2.4.1.2 解决 sun.font.FontConfigManager 找不到

访问OpenJDK官网:OpenJDK Mercurial Repositories

然后在官网找到该Java类,具体查找方式和步骤如下图所示:

然后在我们的工程中新建目录,拷贝考Java 类进去。

如下图:

2.4.1.3 解决 com.sun.tools 报红

com.sun.tools 报红是因为我们的工程依赖中,没有编译好的tools.jar 工具包,需要我们添加该依赖库,具体如下图:

2.4.2 调大IDEA工具编译内存

我们这个是Java 源码,运行测试用例的时候,会编译本地源码,因此,需要调整下IDEA 开发工具的编译内存,防止编译内存过大,造成编译失败。剧吐操作如下:

原本默认是700M,我们可以根据自己的机器内存容量调整该值,比如设置为2000M。

2.4.3 运行测试用例

好了,经过以上操作之后,我们就可以来运行我们自己添加的测试类,来验证下我们搭建的环境了,如果能运行完成,就证明我们搭建的源码环境没有问题了,比如我的运行情况如下:

从上图可以看出,我的测试用例代码运行成功了,到这里,我们JDK源码环境就搭建和验证完成了,可以本地调试和修改源码了,大家不妨自己试一试。

好了,本次内容就分享到这,后续可能会整理书写相关JDK源码的文章,欢迎关注本博主。如果有帮助到大家,欢迎大家点赞+关注+收藏,有疑问也欢迎大家评论留言!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#,桌面游戏编程,数独游戏(Sudoku Game)的算法与源代码

本文包括以下内容: (1)数独游戏的核心算法; (2)数独游戏核心算法的源代码; (3)数独游戏的部分题目样本; (4)适老版《数独》的设计原则…

Mirus TransIT-X2® 在RNAi干扰实验中性能数据展示

不同RNAi干扰途径示意图 基因沉默相关功能研究在分子和细胞生物学中发挥着重要作用,化学转染也在该研究领域扮演者重要角色。常见参与RNAi干扰途径的天然RNA分子包括: ★.小干扰 RNA (Small interfering RNAs, siRNA) :由双链 RNA(dsRNA)断裂…

第0章 Linux 基础入门

第0章 Linux 基础入门 RHCSA Red Hat Certified System Administrator 红帽认证系统管理员。 什么是计算机 计算机的组成: 控制器 运算器 存储器 输出设备 输入设备 计算机只能识别0和1,也就是二进制数。 为什么要学习Linux Linux 因其高效率…

零基础爬什么值得买的榜单——爬虫练习题目一(答二)

新问题总在解决老问题之后出现 引言原因正文 开整方法一代码运行效果 方法二代码运行结果 推荐 补充两个请求头的参数知识RefererUser-Agent 结尾 引言 今天心情不是很好 但是得更新呀 其实我写博客的一方面 也是希望大家能够监督我 让我尽量少情绪化 保持一个应有的速率做正确…

【VSCode 光标返回上一位置】

默认按键 Windows: Alt ← ;或者 鼠标侧键 Linux: Ctrl Alt - ;貌似数字键盘的减号没效果 Mac: Ctrl - 自定义修改方法: VSCode左下角 “管理 / Manage” “键盘快捷方式 / KeyBoard Shortcuts” 搜索 “前进 / Go Forward 或 后退 / Go Back” 双击需…

PySpark(二)RDD基础、RDD常见算子

目录 RDD RDD五大特性 RDD创建 RDD算子 常见的Transformation算子 map flatMap mapValues reduceByKey groupBy filter distinct union join intersection glom groupByKey groupByKey和reduceByKey的区别 ? sortBy sortByKey 常见的action算子 countByKey…

npm ERR! reason: certificate has expired(淘宝镜像过期)

npm ERR! request to https://registry.npm.taobao.org/yauzl/-/yauzl-2.4.1.tgz failed, reason: certificate has expired 今天在执行npm install命令时,报错百度了下是淘宝证书过期原因 解决方法一 执行下面两个命令再进行npm install即可 npm cache clean --…

LangChain结合通义千问的自建知识库

LangChain结合通义千问的自建知识库 在使用了通义千问API了之后,下一步就是构建知识库文档,使用了比较有名的LangChian,最后成果将自己的txt生成了知识向量库,最后我还把自己的论文生成了一个知识向量库,然后问他我的…

测试环境搭建整套大数据系统(一:基础配置,修改hostname,hosts,免密,时间同步)

一:使用服务器配置。 二:修改服务器名称hostname,hosts。 在 Linux 系统中,hostname 和 /etc/hosts 文件分别用于管理主机名和主机名解析。 在三台服务器上,分别执行以下命令。 vim /etc/hostnamexdso-hadoop-test-0…

Linux内核调参常用整理

一、【写在前面】 Linux内核调参是一个重要知识,这篇文章总结一下常见的参数用法。 调参位置在 /etc/sysctl.conf中或者sysctl.d 区别是: /etc/sysctl.conf 文件: 这是默认的主配置文件,包含了系统上所有的 sysctl 参数配置。所…

maven打包spring项目

常用的Maven命令如下 命令 说明mvn clean 清理Maven 项目。会删除目标路径(一般是target目录)Maven生成的打包文件,编译文件。mvn package 打包Maven项目,会生成jar 或者war文件。mvn test 执行test目录下的测试用例。mvn deploy 发布依赖到远端mvn site 生成…

Leetcode206:反转链表

一、题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表 示例: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]输入:head [1,2] 输出:[2,1]输入:head [] 输出&#xff1…

面试经典 150 题 -- 滑动窗口 (总结)

面试经典150题链接 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台 209 . 长度最小的子数组 思路 : 滑动窗口的思想,取ij0,向后遍历j,记录前缀和[l,r]为s,如果s>target,那么左端点向右移动,直到s…

net 一台路由器如何让两个不同网段的终端可以通信。

# 终端设备自己设置就行了 # 路由器的设置 The device is running! #################################################### <Huawei> Feb 1 2024 21:21:09-08:00 Huawei %%01IFPDT/4/IF_STATE(l)[0]:Interface GigabitEt hernet0/0/0 has turned into UP state. <…

Linux系统——防火墙

一、防火墙的认识 引言 安全技术 入侵检测系统&#xff08;Intrusion Detection Systems&#xff09;&#xff1a;特点是不阻断任何网络访问&#xff0c;量化、定位来自内外网络的威胁情况&#xff0c;主要以提供报警和事后监督为主&#xff0c;提供有针对性的指导措施和安全…

POI word操作,如何使表格单元格文本内容垂直/水平居中(两行代码解决)

垂直居中&#xff1a;cell本身就有垂直对齐的api&#xff0c;一行代码就够。 水平居中&#xff1a;一般方式行不通&#xff0c;网上苦找了许多方式&#xff0c;代码都太长了&#xff0c;&#xff0c;忒麻烦。于是我突发奇想&#xff0c;发现可以利用paragraph的水平居中对齐方…

Flask 入门3:Flask 请求上下文与请求

1. 前言 Flask 在处理请求与响应的过程&#xff1a; 首先我们从浏览器发送一个请求到服务端&#xff0c;由 Flask 接收了这个请求以后&#xff0c;这个请求将会由路由系统接收。然后在路由系统中&#xff0c;还可以挂入一些 “勾子”&#xff0c;在进入我们的 viewFunction …

小白水平理解面试经典题目_数组类Leetcode 412. Fizz Buzz【数学解法】

412 FizzBuzz 小白渣翻译&#xff1a; 给定一个整数 n &#xff0c;返回一个字符串数组 answer &#xff08;从 1 开始索引&#xff09;&#xff0c;其中&#xff1a; answer[i] “FizzBuzz” 如果 i 能被 3 和 5 整除。answer[i] “Fizz” 如果 i 能被 3 整除。answer[i]…

【gulp+jq+html】添加环境变量,并在js中使用(判断环境,更改api接口域名)+ 附gulpfile.js代码

参考博文&#xff1a; gulp分离环境 gulp中如何配置环境变量 gulp环境变量配置 1、安装cross-env插件 npm install cross-env -d2、package.json更改scripts "scripts": {"clean": "gulp clean","serve:test": "cross-env NODE…

IP协议(2) 和 数据链路层协议基础

IP协议续 1.路由选择 在复杂的网络结构中,我们需要找到一个通往终点的路线,这就是路由选择 举个例子:我们在没有手机导航之前,想去一个地方得是到一个地方问一下路的方式最终找到目的地 路由的过程,其实就是样子问路的过程 1.当IP数据包到达路由器的时候,会查看目的IP 2.路由器…