解压openjdk后必须配置java_home和path:新建系统变量java_home指向解压根目录(如d:\java\jdk-17.0.9+9),再在path中添加%java_home%\bin;jre_home已基本弃用,验证需新开cmd执行java -version与javac -version且版本一致。

解压后必须配置 JAVA_HOME 和 Path
解压完 OpenJDK(比如 jdk-17.0.9+9)只是完成了“物理部署”,系统并不知道该用哪个 JDK 运行 java 或编译 javac。不配环境变量,CMD 里直接输 java -version 会报 'java' is not recognized as an internal or external command。
关键动作只有两个:
- 新建系统变量
JAVA_HOME,值为 JDK 解压后的根目录(不是bin子目录),例如D:\Java\jdk-17.0.9+9 - 编辑系统变量
Path,新增一条:%JAVA_HOME%\bin
注意:不要把 jre 目录加进 Path,现代 OpenJDK(8u292+、11+、17+)已默认不含独立 jre 目录;若手动用 jlink 构建过 jre,也无需额外加进 Path,java.exe 就在 bin 下。
JRE_HOME 在 2026 年基本可以忽略
老教程常提 JRE_HOME,但这是针对 Oracle JDK 早期分家(JDK/JRE 分开安装)或某些旧工具(如旧版 Tomcat 8.5 之前)的兼容要求。当前主流工具链(Maven、Gradle、IntelliJ、VS Code Java Extension、Spring Boot CLI)都不再读取 JRE_HOME。
除非你明确在用:
- Tomcat ≤ 8.5(且未升级脚本)
- 某些遗留 Shell/Batch 启动脚本硬编码了
%JRE_HOME% - 自己写的批处理调用了
%JRE_HOME%\bin\java.exe
否则不用设 JRE_HOME,设了反而可能干扰自动探测逻辑。
验证时别只信 java -version,还要测 javac
很多用户配完以为成功,结果新建 Java 文件用 javac HelloWorld.java 报错,才发现 Path 只加了 JRE 路径或漏了 %JAVA_HOME%\bin。
正确验证顺序:
- 打开全新 CMD 窗口(旧窗口不继承新环境变量)
- 运行
echo %JAVA_HOME%,确认输出是你解压的完整路径 - 运行
where java,应只返回一行:%JAVA_HOME%\bin\java.exe - 运行
java -version和javac -version,两者输出版本号一致,且含OpenJDK字样
如果 where java 返回多行,说明系统里还有别的 Java(比如残留的 Oracle JDK、Android Studio 自带 JDK、PowerShell 的 $env:PATH 缓存),得清理冲突路径。
多个 JDK 共存时,JAVA_HOME 是唯一开关
你可能同时解压了 jdk-8.0.362、jdk-17.0.9+9、jdk-21.0.3。切换版本不需要重装或改 Path,只需:
- 修改
JAVA_HOME指向目标 JDK 根目录 - 关闭并重开所有终端和 IDE(IDEA/VS Code 不会自动 reload 系统环境变量)
- 检查
java -version是否已变
IDE 内部运行配置(如 IntelliJ 的 Project SDK、Run Configuration 的 JRE)是独立于系统 JAVA_HOME 的,它们优先级更高——也就是说,即使系统 JAVA_HOME 指向 JDK 17,只要 IDEA 项目设了 JDK 8,编译和运行仍走 JDK 8。
别指望改完 JAVA_HOME 后 IDE 里的 Maven 控制台就自动切版本,那得手动刷新项目或重置 Settings → Build → Build Tools → Maven → Importing → JDK for importer。











