java_home必须指向jdk根目录(含bin、lib等的父目录),如c:\program files\java\jdk-17.0.10;path中需严格写为%java_home%\bin;多jdk共存时应将新jdk路径置顶并重启命令行。

复制 JDK 17 安装路径时容易漏掉的关键层级
变量值 JAVA_HOME 必须指向 JDK 根目录(即包含 bin、lib、conf 等子文件夹的那层),而不是 bin 目录本身。很多人复制了 C:\Program Files\Java\jdk-17.0.10\bin,结果 java -version 报错或找不到类加载器。
正确做法是:在文件管理器中打开 JDK 安装目录 → 确认能看到 bin 文件夹 → 复制其父路径。例如:
- ✅ 正确:
C:\Program Files\Java\jdk-17.0.10 - ❌ 错误:
C:\Program Files\Java\jdk-17.0.10\bin或C:\Program Files\Java\jdk-17.0.10\bin\(尾部反斜杠不必要,且多一层bin)
Path 中 %JAVA_HOME%\bin 的写法必须严格匹配
Windows 不会自动补全或纠错,%JAVA_HOME%\bin 这个字符串必须逐字符准确输入,大小写不敏感但符号不能错。常见错误包括:
- 把
%JAVA_HOME%写成%JAVA_HOME(缺右百分号) - 用中文标点或全角反斜杠
\替代英文反斜杠\ - 误加空格:
%JAVA_HOME% \bin或%JAVA_HOME%\ bin - 混淆变量名:
%java_home%\bin(Windows 环境变量名区分大小写?不区分,但习惯上全大写;关键是名称必须和JAVA_HOME完全一致)
建议直接复制粘贴,不要手敲。验证方式:在命令行执行 echo %JAVA_HOME%,看是否输出预期路径。
多个 JDK 共存时,Path 条目顺序决定实际生效版本
Windows 按 Path 中条目的从上到下顺序查找可执行文件。如果你机器上已有 JDK 8 或 JDK 11,而新装了 JDK 17,但 java -version 仍显示旧版本,大概率是旧 JDK 的 bin 路径排在前面。
解决方法:
- 在「编辑环境变量」窗口中,选中你刚添加的
%JAVA_HOME%\bin行 - 点击「上移」按钮,把它拖到 Path 列表最顶部
- 如果旧 JDK 是通过安装程序自动写入的(如
C:\Program Files (x86)\Common Files\Oracle\Java\javapath),建议直接删掉那一整行 —— 它通常指向 JRE,且版本不可控
注意:修改后需关闭并重新打开命令行窗口,否则缓存未刷新。
路径含空格时,无需加引号,但必须确保路径本身合法
C:\Program Files\Java\jdk-17.0.10 这类含空格的路径,在 JAVA_HOME 和 Path 中均可直接使用,Windows 原生支持,不用加双引号包裹。
真正要警惕的是:
- 路径中出现中文(如
D:\开发工具\jdk-17)→ 极易导致 Maven、Gradle、IDEA 启动失败 - 路径含特殊字符(
&、#、!)→ 某些脚本解析会中断 - 路径末尾有多余空格(肉眼难辨)→
echo %JAVA_HOME%可能显示异常,或引发后续工具报错
最稳妥的做法:安装时就选无中文、无空格、无特殊字符的路径,比如 D:\jdk17 或 E:\env\jdk-17.0.10。











