编译 JDK
更新: 10/24/2025 字数: 0 字 时长: 0 分钟
我们做 Java 开发,第一件事就是要安装 JDK,因为它包含了编译和运行 Java 程序所需的工具和库。下载的 JDK 是由源码编译成可执行的二进制文件,那么我们也可以对源码进行修改,然后编译成我们自己的 JDK。说干就干。
1. 获取 JDK 源码
OpenJDK 是 Java 官方开源版本,另外各大厂商和社区基于开源的代码进行二次开发,形成了很多下游发行版,比如:Azul Zulu、Amazon Corretto、Eclipse Temurin等。
其中,Eclipse Temurin是由Eclipse 基金会下的Adoptium社区维护的开源 JDK 发行版,它完全免费,提供不输于商业 JDK 的性能和稳定性,被业界广泛认可与采用,我们这里就使用它的源码进行编译。官方网站

2. 编译 JDK
假如想编译JDK 8,那本机必须最起码得有一个JDK 7或者更新一点的版本(Boot JDK);你想编译JDK 11,那就要求本机必须装有JDK 10或者11。
我现在下载的是JDK 17的源码包,并且我们本地也安装了JDK 17,所以可以直接编译JDK 17。
下载后解压,进入解压目录,执行以下命令:
bash configure这条命令是用来检查你的系统环境,生成适合本机编译的 Makefile 和编译选项。可能会报错,提示缺少依赖项:autoconf、make、gcc等,按照提示安装缺少的依赖项:

brew install autoconf再次执行bash configure命令,可能还会提示如下错误:

这是因为我当前的系统是MacOS,而在MacOS上编译 JDK 需要 Apple 的 SDK(头文件 + 系统框架)与xcodebuild工具,这就需要安装Xcode,可以从App Store下载安装:

注意:可能已经安装了Xcode Command Line Tools(轻量版),这也是不行的,必须安装完整的Xcode。
安装完成后,“激活”安装的Xcode,执行以下命令:
# 接受 Xcode 许可协议,执行后需要回车一次和输入`agree`
sudo xcodebuild -license
# 告诉系统当前要使用哪个 Xcode(开发环境)
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
# 验证命令
xcodebuild -version
# 输出示例
Xcode 26.0.1
Build version 17A400再次执行bash configure命令,不过这次需要加上--with-sysroot参数,指定 Apple SDK 的路径:
bash configure --with-sysroot=$(xcrun --show-sdk-path)又可能提示错误:

这是因为 JDK 内部的 Java 2D、OpenGL、Metal Pipeline 需要链接一些 Metal 头文件或工具,这里我们直接跳过,顺便加上--disable-warnings-as-errors参数,表示禁止把警告当作错误:
bash configure \
METAL=/usr/bin/true \
METALLIB=/usr/bin/true \
--with-sysroot=$(xcrun --show-sdk-path) \
--disable-warnings-as-errors执行后,输出如下内容,则表示配置成功:

接下来,才是真正的编译,执行以下命令:
make all
编译后的 JDK 会生成在build/macosx-x64-server-release/jdk目录下:

这不就是我们平时下载的 JDK 目录结构嘛,我们可以进入bin目录,执行java -version命令,查看编译后的 JDK 版本:

3.IDEA 导入源码
打开IDEA,选择File -> New -> Project from Existing Sources...,选择源码目录,后面的步骤中会提示选择 SDK,也不要选择,把可选的 SDK 删除掉,点击Next即可:

目前就导入成功了,可以愉快地阅读和修改源码了,如果发现某些类有红色报错,可能是模块没有关联,鼠标悬浮上去,点击Add Module Dependency即可:

