java 环境变量配置后 powershell 和 cmd 表现不一致,通常是因为两者读取环境变量的机制不同:cmd 直接读取注册表中的用户或系统变量,而 powershell 在启动时会从注册表加载并缓存这些值到进程环境中。如果修改了注册表但当前会话未刷新,powershell 可能仍显示旧值。解决方法是重启终端、使用 $env:java_home 手动设置,或通过 [environment]::setenvironmentvariable() 更新当前会话。

CMD 中 Java 命令无法识别怎么办
当 CMD 提示 'java' 不是内部或外部命令时,说明 PATH 未包含 Java 的 bin 目录。需检查注册表中 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerEnvironment 下的 PATH 是否已追加 %JAVA_HOME%in,并确保 JAVA_HOME 指向正确的 JDK 安装路径。修改后重启 CMD 即可生效。

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PATH reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v JAVA_HOME echo %JAVA_HOME% where java
PowerShell 中 $env:JAVA_HOME 为空或旧值怎么办
PowerShell 启动时从注册表加载环境变量,若注册表已更新但 PowerShell 未重启,则 $env:JAVA_HOME 仍为旧值或空。可通过 [Environment]::GetEnvironmentVariable("JAVA_HOME", "User") 获取最新注册表值,并手动赋值给 $env:JAVA_HOME。或者重启 PowerShell 以强制重新加载。
掌握 ES6+ 特性,包括 async/await、解构、扩展运算符、箭头函数、Promise、模块、迭代器、生成器以及函数式编程模式,编写简洁高效的 Java

[Environment]::SetEnvironmentVariable("JAVA_HOME", "C:\Program Files\Java\jdk-17", "User")
$env:JAVA_HOME = [Environment]::GetEnvironmentVariable("JAVA_HOME", "User")
$env:PATH = "$env:JAVA_HOME\bin;" + $env:PATH
java -version
如何验证当前会话的环境变量是否同步
要验证当前会话的环境变量是否与注册表一致,可比较 $env:JAVA_HOME 与 [Environment]::GetEnvironmentVariable("JAVA_HOME", "User") 的值。若两者不同,说明 PowerShell 未刷新。此时执行 [Environment]::SetEnvironmentVariable() 更新当前会话,或重启终端。对于 CMD,可使用 echo %JAVA_HOME% 并与注册表值对比,若不一致则重启 CMD。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










