JAVA_HOME必须精准指向JDK根目录(含bin、lib、jre子目录),不可为bin或jre路径,否则Maven、Gradle等工具会报“not a valid JDK”;需同步将%JAVA_HOME%\bin加入PATH顶端并重启终端验证echo %JAVA_HOME%、java -version和javac -version三者一致。

JAVA_HOME 必须精准指向 JDK 根目录,这是编译工具链(如 javac、Maven、Gradle、Tomcat)能正确加载 tools.jar、定位 javac 和识别 JDK 版本的前提。配错会导致“找不到 javac”“not a valid JDK”等错误,而非单纯命令不可用。
确认 JDK 根目录位置
安装 JDK 后,不要直接抄 IDE 内置路径或 where java 的输出路径(它指向 bin/java.exe)。正确做法是:
- 打开文件资源管理器,粘贴你记下的安装路径(如 C:\Program Files\Java\jdk-25.0.3)
- 确认该目录下同时存在 bin、lib、jre(或 jmods)三个子目录
- 路径中避免中文、空格、&、# 等特殊字符;若默认装在 Program Files 下,建议复制后手动访问验证是否可打开
- 常见有效路径示例:
C:\tools\jdk-17.0.9
D:\jdk21
C:\Program Files\Java\jdk-11.0.21+9
设置 JAVA_HOME 系统变量
必须通过系统级环境变量设置,临时 set 命令无效且重启即失:
- 按 Win + R → 输入 sysdm.cpl → 回车 → 切到「高级」→「环境变量」
- 在【系统变量】区域点击「新建」
- 变量名填:JAVA_HOME(全大写,无空格)
- 变量值填:你确认的 JDK 根目录完整路径(如 D:\tools\jdk-25.0.3),结尾不加反斜杠,绝对不带 \bin
- 点击「确定」保存
同步配置 PATH 并验证寻址逻辑
JAVA_HOME 本身不参与命令执行,但所有依赖它的工具(Maven、Gradle、IDE)会拼接 $JAVA_HOME/bin/javac 或读取 $JAVA_HOME/lib/tools.jar。因此必须确保:
立即学习“Java免费学习笔记(深入)”;
- 编辑【系统变量】中的 Path → 「编辑」→ 「新建」→ 输入:%JAVA_HOME%\bin
- 选中该项 → 点击「上移」至列表最顶端(防止旧 JDK 或 JRE 干扰)
- 关闭所有终端,新开一个 CMD 或 PowerShell(旧窗口不会刷新变量)
- 依次运行以下三行命令,全部成功才算寻址正常:
echo %JAVA_HOME%
java -version
javac -version
前者应输出你设置的根路径;后两者版本号需一致,且与 JDK 安装版本匹配
多版本共存时的关键注意点
系统不自动切换 JAVA_HOME。当你安装多个 JDK:
- 每次更换 JDK,必须手动更新 JAVA_HOME 变量值
- 修改后务必重启终端、IDE 或构建工具(如 IntelliJ 需重新导入项目,Maven 需清空 target)
- 可配合 where javac(Windows)或 which javac(macOS/Linux)反向验证当前生效的编译器路径是否落在 $JAVA_HOME/bin 下
- CI/CD 或 Docker 中需显式声明 JAVA_HOME,不能依赖宿主机继承


















