JAVA_HOME必须最先配置,否则Path和CLASSPATH中%JAVA_HOME%无法展开导致java/javac命令失效;需先新建JAVA_HOME指向JDK根目录,再在Path中单独添加%JAVA_HOME%\bin,CLASSPATH通常无需配置。

JAVA_HOME 必须最先配置,否则后续所有依赖它的地方都会失效——这是 Windows 下 Java 环境变量配置的铁律。
为什么 JAVA_HOME 必须排第一?
因为 Path 和(可选的)CLASSPATH 都会用到 %JAVA_HOME% 这个变量引用。Windows 环境变量是「按顺序解析」的:如果 JAVA_HOME 还没定义,你在 Path 里写 %JAVA_HOME%\bin,系统就只会原样保留这段文字,不会展开成真实路径,结果就是 java、javac 命令在任意位置都找不到。
正确的三步顺序与操作要点
-
第一步:新建系统变量
JAVA_HOME
变量值填你 JDK 的根目录,例如:C:\Program Files\Java\jdk-17.0.2(注意:不是bin目录,也不是jre子目录) -
第二步:编辑系统变量
Path
点击「新建」,单独添加一行:%JAVA_HOME%\bin;
⚠️ 不要手动拼接成C:\...\jdk-17.0.2\bin,也不要和其它路径挤在一条里用分号连;
⚠️ JDK 17+ 已移除jre目录,%JAVA_HOME%\jre\bin这一项现在无效,删掉。 -
第三步:
CLASSPATH可跳过(推荐不配)
现代 JDK(8u162+ 及所有 JDK 9+)默认自动加载rt.jar等核心类,绝大多数项目(Maven/Gradle/IDE)也不读这个变量;
若硬要配,变量值应为:.;%JAVA_HOME%\lib(仅此即可,dt.jar和tools.jar在 JDK 9+ 中已模块化,不再需要显式声明)
验证时最常卡住的三个地方
打开新命令行窗口(旧窗口不继承新环境变量),依次执行:
java -version javac -version
如果只显示 'java' is not recognized...,大概率是:
– JAVA_HOME 拼写错误(比如写成 Java_Home 或 JAVA_HOME_);
– Path 里没用「新建」而是直接粘贴进变量值文本框,导致 %JAVA_HOME%\bin 被当作文本而非变量;
– 安装的是 JRE(仅运行环境)而非 JDK(开发包),javac.exe 根本不存在。
一个被忽略但关键的细节
Windows 10/11 的「环境变量编辑器」把 Path 显示为多行列表,但底层仍是传统分号分隔字符串。你添加的每一行,系统实际会在末尾自动补上分号——所以千万别自己再手敲分号,否则可能造成路径末尾出现双分号,极少数情况下触发解析异常。
立即学习“Java免费学习笔记(深入)”;










