需先排查残留jdk:运行where java查路径、检查java_home指向、控制面板查安装项;再手动删安装目录及注册表中hkey_local_machine\software\javasoft\jdk相关项;最后重置java_home和path环境变量,并在ide及maven/gradle中清理缓存配置。

确认当前系统里还剩哪些 JDK
Windows 上残留的 JDK 往往不会自动从注册表或环境变量里消失,哪怕你删了文件夹,java -version 还可能报旧版本,或者 where java 返回多个路径。先得摸清底细,别急着删。
- 打开命令行,运行
where java,看输出的所有java.exe路径 —— 每个都对应一个可能没卸载干净的 JDK - 检查
%JAVA_HOME%环境变量指向哪,它可能还指着某个已删除目录,导致后续配置失效 - 在「控制面板 → 程序和功能」里搜索 “Java SE Development Kit”,注意带版本号的条目(比如 “JDK 8 Update 291”),但有些旧版根本不会出现在这里
手动删掉 JDK 安装目录和注册表项
Windows 的 JDK 卸载程序经常漏删注册表,尤其 JDK 8 及更早版本。光删 C:\Program Files\Java\jdk-xx 不够,残留注册表会干扰新 JDK 的识别和 IDE 的自动探测。
- 删安装目录:找到
where java输出的每个 JDK 路径的上层文件夹(比如C:\Program Files\Java\jdk1.8.0_291),整个删掉 - 清理注册表:按
Win + R输入regedit,定位到HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK和HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit,把里面对应旧版本的子项全删掉(注意别动其他 JavaSoft 项) - 别碰
HKEY_CURRENT_USER\Software\JavaSoft—— 这里通常是 JRE 或用户级配置,和 JDK 卸载关系不大
重置 JAVA_HOME 和 PATH 环境变量
很多问题其实不是 JDK 没卸干净,而是环境变量还在引用不存在的路径,导致 javac 找不到、IDE 报 “No JDK specified” 或 Maven 编译失败。
- 进「系统属性 → 高级 → 环境变量」,删掉旧的
JAVA_HOME,新建一个指向你刚装好的 JDK 根目录(比如C:\Program Files\Java\jdk-21),不要带\bin - 检查
PATH:删掉所有含jdk-xx\bin的条目,只保留一条:%JAVA_HOME%\bin - 改完后必须新开命令行窗口验证 —— 已打开的窗口不会自动读取新环境变量,
echo %JAVA_HOME%和java -version都得对得上
验证是否真干净了(IDE 和构建工具常踩的坑)
IntelliJ、Eclipse、VS Code 的 Java 插件,以及 Maven、Gradle,都会缓存 JDK 列表。即使系统层面清干净了,它们仍可能列出已删除的 JDK 并默认选中,造成“明明重装了却用不上”的假象。
立即学习“Java免费学习笔记(深入)”;
- IntelliJ:File → Project Structure → SDKs,删掉所有灰色(路径不存在)的 SDK 条目;再进 Project Settings → Project → Project SDK,重新选一次
- Maven:检查
%MAVEN_HOME%\conf\settings.xml或项目根目录下的mvn.cmd是否硬编码了JAVA_HOME,这种写死路径比系统变量优先级还高 - Gradle:查看
gradle.properties里有没有org.gradle.java.home,有就删掉或改成新 JDK 路径
最麻烦的是某些老项目自带 .java-version 或 .sdkmanrc,会覆盖全局设置,得一个个翻出来处理。










