必须新开CMD窗口,执行echo %JAVA_HOME%确认路径正确(不含\bin),再分别运行java -version和javac -version均显示版本号才算验证成功。

配置好 Java 环境变量后命令行仍报“java 不是内部或外部命令”,不是配置没做,而是系统没“认到”——关键在路径是否可达、变量是否加载、调用是否准确。
确认 JDK 本身能直接运行
跳过环境变量,用绝对路径验证 JDK 是否真正可用:
- Windows:在 CMD 中输入 "C:\Program Files\Java\jdk-17\bin\java.exe" -version(注意引号包裹含空格路径)
- macOS/Linux:输入 /usr/lib/jvm/jdk-17.0.2/bin/java -version(替换为你的实际路径)
若输出版本号,说明 JDK 安装完好;若报错,优先重装 JDK 或改用无空格路径(如 C:\java\jdk-17)。
JAVA_HOME 和 PATH 必须严格匹配
JAVA_HOME 是“指针”,PATH 才是“路标”,二者缺一不可且格式不能错:
- JAVA_HOME 值必须是 JDK 根目录,例如 C:\java\jdk-17,不能带 \bin,也不能以反斜杠结尾
- PATH 中必须显式包含 %JAVA_HOME%\bin(Windows)或 $JAVA_HOME/bin(macOS/Linux)
- Windows 下不要给路径加英文双引号;macOS/Linux 的 shell 配置中,export PATH="$JAVA_HOME/bin:$PATH" 必须用双引号包裹变量
新配置不会自动生效
环境变量修改后,已打开的终端、IDE、VS Code 内置终端等都不会刷新——它们沿用旧会话的环境:
- Windows:关闭所有 CMD/PowerShell,**新开一个窗口**再测试
- macOS/Linux:改完 ~/.zshrc 后运行 source ~/.zshrc;先用 echo $SHELL 确认当前 shell 类型
- IDE(如 IntelliJ、Eclipse)需完全退出再启动;VS Code 建议在设置中启用 “Run in login shell” 并重启终端
检查实际调用的是哪个 java
PATH 中可能有多个 Java 路径,系统按顺序找,第一个命中就用它:
- Windows:运行 where java,看输出的第一条路径是不是你期望的
- macOS/Linux:运行 which java,再配合 ls -l $(which java) 查看软链接指向
- 常见干扰项:Oracle 自动安装的 C:\Program Files (x86)\Common Files\Oracle\Java\javapath,应把它从 PATH 中删掉或移到 %JAVA_HOME%\bin 之后
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











