jdk 21 安装需优先选用 eclipse temurin 的 .msi 包,安装时取消勾选“add to path”,设置 java_home 为安装路径(不含\bin),path 中仅添加 %java_home%\bin,并通过 java -version、java -xshare:check、javac -version 三步验证。

下载时别点 Oracle 官网的“立即下载”,先选 Temurin 或手动确认 MSI 格式
Oracle 官网现在强制登录,且安装包默认带捆绑软件(比如 McAfee、JavaFX 文档),还容易误下成 jdk-21_windows-x64_bin.exe 这类非 MSI 的“Installer”——它本质是自解压包,不注册环境变量,后续配置更麻烦。直接去 Eclipse Temurin 下载,选 OpenJDK21U-jdk_x64_windows_hotspot_*.msi 文件名明确带 .msi 后缀的安装包。用 Edge 或 Chrome 下,Firefox 有时会把 .msi 当附件拦截。
安装时必须取消勾选 “Add to PATH”
MSI 安装器默认勾选这一项,看似省事,实则埋雷:它会把类似 C:\Program Files\Java\jdk-21\bin 这种含空格的路径硬编码进系统 PATH。Gradle 8.4+、Maven 某些插件、甚至部分 IDE 启动脚本解析失败,报错 The filename, directory name, or volume label syntax is incorrect。安装过程中看到这个选项,一定取消勾选。
- 安装路径可以保留默认
C:\Program Files\Java\jdk-21,但别改到中文或带空格的路径(如C:\我的开发工具\jdk-21) - 如果杀毒软件弹窗拦截(尤其是某些国产安全软件),临时关闭再装,否则 MSI 可能无法写入注册表
环境变量只配 JAVA_HOME 和 %JAVA_HOME%\bin,删光旧 JDK 路径
装完立刻打开“系统属性 → 高级 → 环境变量”,新建系统变量:JAVA_HOME 值设为 C:\Program Files\Java\jdk-21(不含 \bin)。然后编辑系统 PATH,新增一行:%JAVA_HOME%\bin。这比硬编码路径更健壮,也规避空格问题。
- 运行
where java和where javac,如果输出多行,说明旧 JDK(比如 Windows 11 自带的 OpenJDK 17 或你之前装的 JDK 8/11)还在PATH里,必须删掉所有硬编码的 Java 路径(如C:\Program Files\AdoptOpenJDK\jdk-11.0.11.9-hotspot\bin) - 把
%JAVA_HOME%\bin这一行拖到PATH列表最顶部,确保优先调用 - 改完必须新开一个命令提示符或 PowerShell 窗口,旧窗口不会自动刷新环境变量
验证要跑三步:java -version、java -Xshare:check、javac -version
java -version 只看版本号不够,JDK 21 的关键特性(比如虚拟线程)需要运行时支持。真正有效的验证是:
-
java -version:确认输出含21.开头,且 build 字符串里有LTS -
java -Xshare:check:检查类数据共享(CDS)是否就绪,成功会打印Archive is valid;失败说明 jmods 缺失(常见于第三方“精简版” JDK) -
javac -version:确认编译器可用,避免只装了 JRE 或路径没包含javac.exe
如果 javac 找不到,大概率是 PATH 没加对,或者安装时误选了“仅 JRE”选项(Temurin MSI 默认全装,Oracle 安装器可能有此陷阱)。











