卸载jdk后必须清理四类残留:安装目录(含多路径)、注册表对应版本项、path中jdk路径、system32/syswow64中的java.exe等文件;清完后java -version应报错、%java_home%为空、where java无输出。

卸载 JDK 后残留文件不清理,是导致新版本不生效、IDE 找不到 JDK、java -version 仍显示旧版的最常见原因。真正要清的不是“安装包临时文件”,而是安装后固化在系统里的四类残留:安装目录本身、注册表登记项、环境变量引用、以及被复制到系统关键路径的可执行文件。
删掉所有 JDK 安装目录(不止一个)
别只盯着 C:\Program Files\Java\。JDK 可能分散在多个位置:
-
C:\Program Files (x86)\Java\(32位安装或旧版本常用) -
C:\Users\[用户名]\AppData\Local\Oracle\Java\(自动更新器缓存) -
C:\Users\[用户名]\AppData\LocalLow\Sun\Java\(早期 JRE/JDK 的用户级缓存)
先运行 where java 查出每个 java.exe 的完整路径,再逐层向上找到对应 jdk-xx 文件夹,确认为空后再整个删除。
清理注册表中对应版本项(不是整个 JavaSoft)
Windows 注册表里,JDK 每个版本都单独登记,删错会连带影响 JRE 或其他 Java 工具:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 打开
regedit,定位到:HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK\{版本号}HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\{版本号} - 只删你正在卸载的那个版本的子项(例如
17.0.2),不要删掉整个JavaSoft项 - 不用动
HKEY_CURRENT_USER\Software\JavaSoft,那是用户级 JRE 配置,和 JDK 卸载无关
移除系统 PATH 中所有 JDK 相关路径
环境变量是命令能否被识别的核心。PATH 里哪怕留一条旧路径,java 就永远调用旧版本:
- 进「系统属性 → 高级 → 环境变量」
- 在系统变量的
Path列表中,逐条检查并删除:
所有含jdk-或jre-的绝对路径(如C:\Program Files\Java\jdk-11.0.18\bin)
所有形如%JAVA_HOME%\bin或%JAVA_HOME%\jre\bin的引用 - 删完后,务必新开一个命令提示符验证 —— 原窗口不会刷新环境变量
检查并删除 System32 和 SysWOW64 中的 java.exe
JDK 安装时默认会把 java.exe、javaw.exe、javaws.exe 复制到系统目录,这些文件优先级高于 PATH,极易造成干扰:
- 打开
C:\Windows\System32\,查找并删除:java.exe、javaw.exe、javaws.exe - 同样操作
C:\Windows\SysWOW64\(64位系统下 32位兼容目录) - 删之前可先用
where java看是否输出了这两个目录下的路径,有就说明已被污染
做完这四步,再运行 java -version 应报“不是内部或外部命令”,echo %JAVA_HOME% 应为空,where java 无任何输出 —— 这才算真正清干净了。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










