命令行设置java_home仅临时生效,必须通过系统环境变量界面或管理员powershell命令写入注册表才能永久生效;需在系统变量中新建java_home指向jdk根目录,并将%java_home%\bin添加至path顶部,最后在新终端中验证echo %java_home%、where java及java -version。

很多人误以为在 CMD 或 PowerShell 里输入 set JAVA_HOME=C:\path\to\jdk 就算配好了,其实这只是当前窗口的临时变量,关掉就消失,且不影响 PATH 或其他程序识别 JDK —— 所以这不是“配置”,只是测试用的临时操作。
为什么不能靠命令行永久设置?
Windows 的环境变量分“用户”和“系统”两级,保存在注册表中。命令行里的 set(CMD)或 $env:JAVA_HOME="..."(PowerShell)只修改当前会话内存中的副本,不写入系统设置,因此:
- 新打开的 CMD/PowerShell 窗口看不到这个值
- Eclipse、IntelliJ、Maven、Tomcat 等工具完全读不到
-
java -version能运行,不是因为你设了 JAVA_HOME,而是因为 PATH 里有 java.exe 路径
正确做法:必须走图形界面或 PowerShell 管理员命令
要让 JAVA_HOME 真正生效,得把它写进系统变量。有两种可靠方式:
-
推荐方式(图形化):按
Win + R→ 输入sysdm.cpl→「高级」→「环境变量」→ 在【系统变量】里新建JAVA_HOME,值填 JDK 根目录(如D:\tools\jdk-25.0.3),不带\bin -
命令行方式(需管理员权限):用 PowerShell(以管理员身份运行),执行:
[Environment]::SetEnvironmentVariable("JAVA_HOME", "D:\tools\jdk-25.0.3", "Machine")
这条命令会直接写入系统级变量,效果等同图形界面操作
设完 JAVA_HOME 后,别忘了 PATH
只设 JAVA_HOME 不等于能用 java 或 javac。你还得把 %JAVA_HOME%\bin 加进系统 PATH,并移到最上方:
- 同样在「环境变量」窗口中编辑【系统变量】里的
Path - 点击「新建」,输入
%JAVA_HOME%\bin - 选中这一项,点「上移」到顶部,避免旧版本 JDK 干扰
验证必须开新窗口
所有修改保存后,一定要打开全新的 CMD 或 PowerShell 窗口验证:
-
echo %JAVA_HOME%→ 应显示你设置的路径 -
where java→ 应返回%JAVA_HOME%\bin\java.exe -
java -version和javac -version→ 版本号一致
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











