JDK17是企业级Java开发应默认使用的LTS版本,因其支持至2029年、强制适配Spring Boot 3.x、且ZGC、密封类等特性已在生产环境验证多年;安装不能仅双击.exe,需手动指定无空格路径、分步配置JAVA_HOME与Path、并用where命令双重验证java和javac一致性。

JDK 17 是当前企业级 Java 开发最稳妥的选择,不是“可用”,而是“应默认用”——Spring Boot 3.x 起强制要求 JDK 17+,ZGC、虚拟线程(预览)、密封类等特性已在生产环境验证多年,且官方支持持续到 2029 年后。
为什么不能直接双击 .exe 就完事?
图形安装器(如 Oracle 或 Temurin 的 .msi/.exe)看似省事,但容易踩三个坑:
- 自动勾选的“Add to PATH”可能只写入用户级 Path,而非系统级,导致其他用户或 IDE(如 IntelliJ 以服务方式启动)找不到
javac - 部分安装包默认不设
JAVA_HOME,而 Maven、Gradle、Tomcat 等工具强依赖该变量,缺失会导致构建失败或运行时类加载异常 - 安装路径含空格(如
C:\Program Files\Java\...)在某些脚本中会引发解析错误,尤其 Jenkins 或批处理调用java -cp时
建议:安装时手动指定路径为 C:\jdk-17 或 D:\java\jdk-17(无空格、无中文),并取消安装器自带的环境变量选项,后续统一手动配置。
JAVA_HOME 和 Path 必须分两步配,顺序不能错
JAVA_HOME 是基础锚点,Path 是它的派生。如果先配 Path 再配 JAVA_HOME,或者把 %JAVA_HOME%\bin 写成绝对路径(如 C:\jdk-17\bin),后续升级 JDK 时就得改两处——极易遗漏。
正确操作:
- 新建系统变量:
JAVA_HOME→ 值为C:\jdk-17(严格对应你解压/安装的实际根目录) - 编辑系统变量
Path→ 新增一行:%JAVA_HOME%\bin - 不要设置
CLASSPATH:现代构建工具(Maven/Gradle)和 IDE 自行管理类路径,手动设反而干扰编译,且.;%JAVA_HOME%\lib中的.在 Windows 下易引发安全警告
验证时别只跑 java -version,必须连 javac -version 一起测
常见假成功现象:java -version 能输出,但 javac 报“不是内部或外部命令”。这说明 Path 指向了 JRE 而非 JDK ——比如你机器上残留了旧版 JRE,而 Path 里 C:\Windows\System32 或其他位置的 java.exe 优先被命中。
可靠验证步骤:
- 新开一个 cmd(旧窗口不读新环境变量)
- 执行:
where java→ 应返回C:\jdk-17\bin\java.exe - 执行:
where javac→ 应返回C:\jdk-17\bin\javac.exe - 再分别运行
java -version和javac -version,两个输出的版本号必须完全一致(如都是17.0.19+10)
若 where 查出多个结果,删掉非 JDK 目录下的 java.exe 或调整 Path 中路径顺序。
Temurin 还是 Oracle JDK?企业部署时这个细节很关键
二者在功能上几乎无差别,但许可和分发策略不同:
- Temurin(Eclipse Adoptium):完全开源,免费商用,镜像稳定(推荐清华 TUNA 镜像),适合 CI/CD 流水线批量部署
- Oracle JDK:个人开发免费,但商业使用需订阅(尤其涉及容器化、云环境或大规模部署),且下载需登录 Oracle 账户
如果你用的是 Spring Boot 3.3+ 或 Jakarta EE 10,两者都支持;但若团队已有 Oracle 支持合同,用 Oracle JDK 可直接走原有补丁通道。没有的话,直接下 OpenJDK17U-jdk_x64_windows_hotspot_17.0.19_10.zip 解压即用,比 .exe 更干净。

















