如何在 Windows 上卸载 Temurin JDK 21
Temurin 自带的卸载器会删掉它装的所有东西,包括那个带版本号的专属程序目录,所以这份指南不长。它不会动的是你自己的项目、Maven 或 Gradle 的缓存,以及你自己设置的 JAVA_HOME 或 PATH 条目。这份指南覆盖用 EclipseAdoptium.Temurin.21.JDK winget 包按机器安装的 Eclipse Temurin JDK 21。
先关掉正在用这个 JDK 的程序
关掉所有还在用这个 JDK 跑 java、javac 或构建守护进程的终端、IDE 或构建工具。卸载前在任务管理器(Ctrl+Shift+Esc)里确认没有 java.exe 还在,如果启动过指向这个安装的 Gradle 或 Maven 守护进程,也先停掉(gradlew --stop)。
用自带的卸载器移除应用
打开「设置 › 应用 › 已安装的应用」,找到 Eclipse Temurin JDK with hotspot 21 (x64),选择卸载,或者运行:
winget uninstall --id EclipseAdoptium.Temurin.21.JDK
检查 JAVA_HOME 和 PATH
如果你把 JAVA_HOME 设成了这个 JDK 的目录,或者自己把它的 bin 目录加进了 PATH,卸载器都不会去动这两个。卸载后去「系统属性 › 环境变量」看一下,把还指着这个版本目录的条目删掉或者改指向别的地方。
数据分别在哪里
| 位置 | 里面是什么 | 如何处理 |
|---|---|---|
Program Files\Eclipse Adoptium\jdk-21.0.12.101-hotspot |
这个 JDK 自己的二进制文件和库 | 卸载器会删 |
你自己设置的 JAVA_HOME 和 PATH 条目(如果有) |
指向这个 JDK 的目录 | 卸载器不会动,自己去改 |
Maven 的 .m2\repository 和 Gradle 的缓存(如果用了) |
下载好的构建依赖,各个 JDK 版本共用 | 和这个 JDK 没有专属关系,除非单独清理这些工具,否则不用管 |
因为每个 Temurin 版本都装进一个带版本号的目录(就像上面那个),机器上如果还有别的 Temurin 版本,它在自己单独的目录里,不受这次卸载影响。
检查结果
卸载完成后建议开一个新的终端窗口,运行下面几条只读命令:
java -version
winget list --id EclipseAdoptium.Temurin.21.JDK
Test-Path "$env:ProgramFiles\Eclipse Adoptium\jdk-21.0.12.101-hotspot"
$env:JAVA_HOME
java -version报「无法识别」,说明 PATH 里没有java了;打印出版本号,说明卸载没完成,或者机器上还装着别的 JDK。winget list正常完成且没有匹配,才说明包记录已经没了;列出一行,说明卸载没完成。Test-Path返回False,说明这个 JDK 的目录已经没了;返回True,说明那里还有文件。$env:JAVA_HOME如果还打印着这个 JDK 的旧路径,自己去改掉或者清空,它不会被自动修改。
用 winget 安装时
winget uninstall 运行的是「设置 › 应用」用的同一个 MSI 卸载器,删的是同一批文件,不会动环境变量、你的项目或 Maven、Gradle 的缓存。
Mole 会列出什么
对按机器安装的 winget 版 Temurin JDK 21,安装目录和它的使用记录默认勾选,厂商的 Eclipse Adoptium 上层目录在它下面所有版本都没了之后,由 MSI 卸载器自己删掉。
这次检查覆盖了什么
测试的是通过 winget 按机器提权安装的 Eclipse Temurin JDK 21.0.12.101,MSI 包。
