JDK21安装指南:从下载到环境配置全解析

一、版本选型与核心说明

1.1 Java 发布节奏官方说明

自 Java 9 起,Oracle 正式采用6 个月一个特性版本的发布节奏,固定每年 3 月与 9 月各发布一个新版本,未完成的特性会顺延至下一个版本,不再为单个功能拖延整体发布周期。

其中长期支持(LTS)版本的发布节奏经历过一次官方调整:

  • JDK 11(2018.09)、JDK 17(2021.09):遵循每 3 年一个 LTS 的初始规则

  • 从 JDK 21 开始,Oracle 将 LTS 发布周期缩短为每 2 年一个版本,后续 JDK 25(2025.09)、JDK 29(2027.09)均按此节奏迭代

非 LTS 版本仅提供 6 个月的公开更新,适合尝鲜新特性;LTS 版本提供多年技术支持,是开发、生产环境的标准选择。

1.2 为什么选择 JDK 21

JDK 21 发布于 2023 年 9 月,是当前企业存量项目与学习场景最均衡的选择:

  1. 成熟稳定的 LTS 版本:经过 2 年多的生态适配,主流框架(Spring Boot 3.x、MyBatis-Plus 等)与开发工具均已完美兼容

  2. 免费商用许可:在 Oracle NFTC(No-Fee Terms and Conditions)协议下,可免费用于生产环境与二次分发,无授权风险

  3. 核心特性落地虚拟线程、模式匹配、结构化并发等重要特性正式转正,开发效率提升显著

  4. 支持周期明确 :NFTC 协议下的免费更新持续至 2026 年 9 月(即下一个 LTS 版本 JDK 25 发布后 12 个月),之后更新转为 OTN 付费许可

1.3 选型补充:Oracle JDK vs OpenJDK

两者基于同一套 OpenJDK 源码构建,功能与性能无本质差异,核心区别在授权与分发:

  • Oracle JDK 21:个人学习、商业生产均可免费使用,2026 年 9 月后安全更新需付费订阅;附带官方安装向导与配套工具

  • OpenJDK 发行版(如 Eclipse Temurin、Amazon Corretto):基于 GPLv2+CE 协议永久免费商用,无授权到期风险。

本文以 Oracle JDK 21 为例演示安装流程,OpenJDK 发行版的安装与环境变量配置步骤完全通用。


二、安装前准备

下载前请确认系统信息,避免下载错误架构的安装包:

Windows 系统

右键「此电脑」→「属性」,查看系统类型:当前主流设备均为 64 位操作系统,对应下载 x64 版本安装包。

macOS 系统

点击桌面左上角苹果图标 →「关于本机」,查看芯片类型:

  • Intel 芯片:下载 x64 版本

  • M1/M2/M3/M4 等 Apple Silicon 芯片:下载 arm64 版本


三、官方下载流程(安全无捆绑)

3.1 官方下载入口

直接访问 Oracle 官方下载页:Java Downloads | Oracle

不建议从第三方站点下载,避免捆绑软件与篡改安装包。

3.2 选择 JDK 21 对应版本

  1. 页面下拉找到 Java 21 下载区域,点击「JDK Download」

  2. 切换到对应系统选项卡(Linux / macOS / Windows)

  3. 根据需求选择安装包格式:

|------------------------------------|----------|------------------------|
| 安装包格式 | 适用场景 | 说明 |
| x64 Installer(exe/dmg) | 普通开发者、新手 | 图形化安装向导,操作最简单 |
| x64 Compressed Archive(zip/tar.gz) | 进阶用户 | 绿色免安装,可自定义存放路径,需手动配置环境 |
| x64 MSI Installer | 企业批量部署 | 支持组策略、脚本批量安装 |

这里下载x64 Installer即可。

3.3 下载注意事项

  1. 下载前需勾选接受许可协议

  2. 部分地区会提示登录 Oracle 账号,可使用邮箱免费注册,或尝试跳过登录直接下载

  3. Windows 安装包文件名为 jdk-21_windows-x64_bin.exe,大小约 160-170MB


四、Windows 10/11 安装与环境配置

4.1 运行安装向导

  1. 双击下载的 exe 安装包,启动安装向导,点击「下一步」

  2. 选择安装路径

    1. 不建议使用默认的 C:\Program Files\Java\jdk-21(路径含空格,部分旧工具可能出现兼容问题)

    2. 推荐自定义为无中文、无空格的路径,例如 E:\develop\java_jdk\jdk21

    3. 务必记住该路径,后续配置环境变量需要用到

  3. 组件保持默认「开发工具」勾选即可,无需额外安装公共 JRE

  4. 等待安装进度完成,点击「关闭」结束安装

4.2 环境变量配置(核心步骤)

环境变量的作用是让系统在任意目录下都能识别 javajavac 等命令,是开发环境的标准配置。

重要澄清:JDK 11 及以后版本不需要配置 jre \ bin 路径,也不需要配置 CLASSPATH。这两项是 JDK 8 及更早版本的遗留配置,当前版本配置反而可能引发冲突。

打开环境变量窗口

推荐使用快捷命令:按下 Win + R ,输入**sysdm.cpl**并回车 → 切换到「高级」选项卡 → 点击右下角「环境变量」。

配置系统变量

所有操作均在**下方「系统变量」**区域进行,不要配置到用户变量,避免切换账号后失效。

① 新建 JAVA_HOME 变量

  • 点击「系统变量」下方的「新建」

  • 变量名:JAVA_HOME(严格全大写,行业标准约定,Maven、Tomcat 等工具都会读取该变量)

  • 变量值:JDK 21 的安装根目录,例如 E:\Develop\java_jdk\jdk21

  • 点击「确定」保存

② 编辑 Path 变量

  • 在系统变量列表中找到 Path,双击打开编辑窗口

  • 点击「新建」,输入:%JAVA_HOME%\bin

  • 可选:选中该行,点击「上移」将其移到列表顶部,避免与系统中其他 Java 版本冲突

  • 连续点击「确定」关闭所有窗口,保存配置

4.3 配置生效验证

按下 Win + R 输入 cmd 打开命令提示符,依次执行以下命令:

复制代码
java -version
javac -version

若命令均正常输出版本号与路径,且 javajavac 版本号一致,则基础配置成功。

五、macOS 安装与环境配置

5.1 运行安装程序

  1. 双击下载的 .dmg 镜像文件,挂载安装包

  2. 双击镜像内的 JDK 21.pkg 启动安装向导

  3. 点击「继续」→ 同意许可协议 → 选择安装位置(默认即可)

  4. 输入 Mac 开机密码确认安装,等待进度完成后点击「关闭」

JDK 21 在 macOS 下的默认安装路径为:

/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home

5.2 环境变量配置

macOS 10.15 Catalina 及以上版本默认使用 zsh 终端,更早版本使用 bash 终端,配置文件不同。

第一步:确认终端类型

打开「终端」,执行命令:

bash 复制代码
echo $SHELL
  • 输出 /bin/zsh:对应 zsh 终端(绝大多数用户)

  • 输出 /bin/bash:对应 bash 终端

第二步:编辑配置文件

zsh 终端配置:

bash 复制代码
# 若文件不存在会自动创建
open ~/.zshrc

bash 终端配置:

bash 复制代码
open ~/.bash_profile

在打开的文本文件末尾添加以下两行内容:

bash 复制代码
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

保存并关闭文件。

第三步:使配置立即生效
bash 复制代码
# zsh 用户执行
source ~/.zshrc

# bash 用户执行
source ~/.bash_profile

5.3 验证配置

终端依次执行:

bash 复制代码
java -version
javac -version
echo $JAVA_HOME

输出正常则配置完成。


六、JDK 21 目录结构官方解析

JDK 21 采用模块化架构,不再包含独立的 jre 目录 ,运行时能力已整合进 JDK 自身;如需独立 JRE 可通过 jlink 工具按需生成。

核心目录说明:

bash 复制代码
jdk-21/
├── bin/          # 核心可执行文件:java、javac、jar、javadoc、jps、jstack 等开发与调试命令
├── conf/         # 配置文件目录:安全策略、网络配置、加密算法配置等
├── include/      # C 语言头文件:用于 JNI、JVM TI 等原生交互开发
├── jmods/        # 模块系统文件:JDK 模块化后的核心类库载体
├── legal/        # 开源许可与法律声明文件
├── lib/          # 支撑类库与运行时依赖文件
└── release       # 版本信息文件,记录 JDK 版本、构建号等信息

七、正反双向验证指南

7.1 正向验证:完整可用性校验

仅命令输出正常不足以完全验证环境可用性,推荐通过编译运行 Java 程序做完整校验:

  1. 新建文本文件,重命名为 HelloWorld.java

  2. 写入以下代码:

    java 复制代码
    public class HelloWorld {
        public static void main(String[] args) {
            System.out.println("JDK 21 环境配置成功!");
        }
    }
  3. 在文件所在目录打开命令行,执行编译:

    bash 复制代码
    javac HelloWorld.java
  4. 执行运行命令:

    bash 复制代码
    java HelloWorld

7.2 逆向验证:常见故障排查

以下是安装配置中最高频的问题,对应精准排查方案:

|----------------------------|------------------------------------------------------------------|-----------------------------------------------------------------------------------|
| 故障现象 | 核心原因 | 解决方法 |
| 输入 javac 提示「不是内部或外部命令」 | 1. JAVA_HOME 路径配置错误 2. Path 中未添加%JAVA_HOME%\bin 3. 配置后未重启命令行窗口 | 1. 执行 echo %JAVA_HOME% 核对路径是否真实存在 2. 检查 Path 变量拼写,确保百分号完整 3. 关闭所有 CMD 窗口后重新打开验证 |
| java -version 版本与安装版本不一致 | 系统存在多个 Java 版本,Path 优先级错误 | 在 Path 环境变量中将 %JAVA_HOME%\bin 上移至最顶部;卸载不需要的旧版本 |
| 安装时提示「权限不足」 | Windows 未以管理员身份运行;macOS 密码错误或无权限 | Windows:右键安装包 →「以管理员身份运行」macOS:确认开机密码正确,账号具备管理员权限 |
| macOS 提示「无法打开,无法验证开发者」 | 系统安全策略限制 | 右键安装包 → 选择「打开」→ 在弹窗中再次点击「打开」;或在「系统设置→安全性与隐私」中点击「仍要打开」 |
| 环境变量配置后仍不生效 | 配置文件选错、未执行 source 命令 | 确认终端类型对应正确的配置文件,执行 source 命令后重启终端再验证 |

八、JDK 多版本管理(可跳过)

实际开发中常需在不同项目间切换 JDK 版本,手动修改环境变量效率较低,推荐以下方案:

Windows:简易切换脚本

新建 jdk21.bat 文件,写入:

bash 复制代码
@echo off
set JAVA_HOME=D:\Develop\Java\jdk-21
set Path=%JAVA_HOME%\bin;%Path%
java -version

需要切换版本时,在当前命令行窗口运行该脚本即可(仅当前窗口生效,不影响全局)。

macOS:使用 jenv 工具

bash 复制代码
# 安装 jenv(需先安装 Homebrew)
brew install jenv

# 添加 JDK 版本到管理
jenv add /Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home

# 查看已管理的所有版本
jenv versions

# 全局切换默认版本
jenv global 21

# 仅当前目录切换版本
jenv local 17

通常情况下在IDEA中可以直接手动切换,简单快捷。


九、总结

JDK 21 作为当前生态最成熟的 LTS 版本,是 Java 学习与企业开发的稳妥选择。安装配置本身并不复杂,绝大多数问题都源于路径拼写错误、混淆新旧版本配置规则。

相关推荐
水无痕simon5 小时前
5、六大工作模式-1
java
KhalilRuan6 小时前
UnityCsReference——笔记
java·开发语言·笔记
何以解忧,唯有..6 小时前
SpringBoot 中 @Transactional 注解失效的 8 种常见场景与解决方案
java
SL-staff6 小时前
AB测试数据失真根因与变量热替换实战:JVS-Rules函数计算器架构解析
java·运维·微服务·函数式编程·规则引擎·变量管理·营销技术
Irene19916 小时前
Java 3 天入门:“最小必要知识”的功利性学法
java
长谷深风1116 小时前
Agent 何时该 Replan:五个关键判断
java·大数据·开发语言·ai agent·ai智能体·agent设计·clarify机制
阿弱7 小时前
graph-core 的边与命令模式设计
java·后端·agent
互联网中的一颗神经元7 小时前
01. Go 内存管理全景架构
java·jvm·golang
萧瑟余晖7 小时前
Java深入解析篇三十四之分布式事务
java·开发语言·分布式