无需重启电脑,但必须新开cmd窗口才能生效——因环境变量是进程启动时快照继承的,已运行cmd不会自动更新;java_home和path在启动瞬间展开,旧窗口path仍为修改前内容;ide内置终端同理,需彻底退出再重开。

不需要重启电脑,但必须新开一个 CMD 窗口——因为环境变量是进程启动时“快照”下来的,已运行的 CMD 不会自动更新。
环境变量是进程级继承的
当你双击打开 CMD,系统会把当前注册表中保存的环境变量(如 PATH、JAVA_HOME)完整复制一份给这个进程。之后你通过「系统属性」修改了变量,只是改了注册表里的源数据,不会反向通知已经跑起来的 CMD 去刷新。它就像拍了一张照片,原图再怎么改,照片内容也不会变。
JAVA_HOME 和 PATH 的引用依赖启动时机
%JAVA_HOME%\bin 是在 CMD 启动瞬间展开的。如果 JAVA_HOME 本身还没被系统读取(比如刚配置完没新开窗口),那 PATH 里的这一段就无法解析成真实路径,相当于无效条目。只有新启动的 CMD 才会重新读取并展开所有变量。
PATH 查找机制按顺序执行
Windows 按分号分割 PATH,从左到右逐个目录查找 java.exe。旧窗口里 PATH 还是修改前的样子,哪怕你改了 %JAVA_HOME% 的值,它也只会去找原来那个路径下的可执行文件。新窗口才能加载最新顺序和内容,确保调用的是 JDK17 的 java.exe。
IDE 和内嵌终端更需彻底重启
VS Code 或 IntelliJ 的内置终端不是独立进程,而是 IDE 启动时继承的子进程。只要 IDE 没关,它缓存的环境变量就不会更新。反复开关终端没用,必须完全退出 IDE 再重开,才能让新进程读取最新配置。











