java_home必须指向jdk根目录(如c:\program files\java\jdk-21),不可含bin、jre、尾部反斜杠、中文、空格或括号;path中须添加%java_home%\bin,且需重启终端验证。

环境变量编辑器里怎么填 JAVA_HOME
JAVA_HOME 必须指向 JDK 根目录,不是 bin,也不是 jre,更不能带尾部反斜杠。填错就等于锚点偏移,后续所有依赖它的地方都会失效。
常见错误路径:C:\Program Files\Java\jdk-21\bin(多了一个\bin)、C:\Program Files\Java\jdk-21\(末尾有\)、C:\我的开发工具\jdk21(含中文或空格)。
- 正确示例:
C:\Program Files\Java\jdk-21或C:\Dev\jdk-21 - 路径中不能出现中文、空格、括号;若已装在
C:\Program Files下,不用重装,但必须用双引号包裹路径——不过环境变量编辑器不支持引号,所以唯一稳妥解法是重装到纯英文无空格路径 - 变量名必须严格为
JAVA_HOME(Windows 不区分大小写,但统一用大写可避免某些脚本解析失败)
PATH 里加 %JAVA_HOME%\bin 还是硬编码路径
必须用 %JAVA_HOME%\bin,而不是把完整路径如 C:\Program Files\Java\jdk-21\bin 直接粘进去。
原因很实际:硬编码路径含空格时,部分构建工具(比如 Gradle 8.4+、Maven 的某些插件)会解析失败,报错 The filename, directory name, or volume label syntax is incorrect;而变量引用方式由系统自动展开,能绕过这个限制。
- 在“环境变量”窗口中选中
Path→ “编辑” → “新建”,只输入这一行:%JAVA_HOME%\bin - 不要额外加
%JAVA_HOME%\jre\bin:JDK 21 已移除独立 JRE 目录,jre文件夹不存在,加了反而可能触发找不到路径的警告 - 如果 PATH 里已有旧 JDK 的
bin路径(比如C:\Program Files\AdoptOpenJDK\jdk-17.0.2\bin),建议删掉,或至少把它拖到新条目下方——顺序决定优先级
为什么改完环境变量后 java -version 还是报错
最常被忽略的一点:已打开的 CMD、PowerShell、IDE 终端窗口不会自动读取新变量。这不是配置失败,只是缓存没刷新。
- 必须新开一个命令提示符:按
Win + R→ 输入cmd→ 回车;或者在终端里直接关掉当前窗口再重开 - 验证三步缺一不可:
echo %JAVA_HOME%(看路径对不对)、java -version(运行时)、javac -version(编译器) - 如果
echo %JAVA_HOME%输出为空,说明变量没生效,回去检查是不是建在“用户变量”而非“系统变量”里,或者拼写错了变量名 - 如果前两项成功但
javac找不到,大概率是 PATH 没加对——运行where javac,看输出的第一行是不是你设的%JAVA_HOME%\bin下的路径
MSI 安装器勾选 Add to PATH 的坑
官方 MSI 安装包默认勾选“Add to PATH”,看着省事,实则埋雷。它会把带空格的绝对路径(如 C:\Program Files\Java\jdk-21\bin)直接写死进 PATH,绕过 JAVA_HOME 变量,导致后续升级、多版本切换困难,且和构建工具兼容性差。
- 安装时务必取消勾选“Add to PATH”
- 装完立刻手动配
JAVA_HOME和%JAVA_HOME%\bin,这才是可控、可复现的标准做法 - 如果已经勾选安装了,别卸载重来,只需进环境变量编辑器删掉那条硬编码路径,再补上
JAVA_HOME和变量引用形式的 PATH 条目即可
java 命令彻底消失。











