SDKMAN是Linux下管理多JDK版本最轻量主流的方案,支持Temurin、OpenJDK等发行版,通过sdk install/use/default等命令实现隔离安装、一键切换与默认设置。

Linux下管理多个JDK版本,SDKMAN是最轻量、最主流的方案之一。它不依赖系统包管理器,所有版本隔离安装、自动配置环境变量,切换只需一条命令,比手动改JAVA_HOME或用update-alternatives更直观可靠。
安装SDKMAN
打开终端,执行标准安装命令:
- 运行
curl -s "https://get.sdkman.io" | bash - 按提示执行初始化:
source "$HOME/.sdkman/bin/sdkman-init.sh" - 为避免每次新开终端都要手动初始化,把这行加到你的 shell 配置文件中(如
~/.bashrc或~/.zshrc):echo 'source "$HOME/.sdkman/bin/sdkman-init.sh"' >> ~/.zshrc && source ~/.zshrc - 验证安装:
sdk version能输出版本号即成功
查看和安装JDK版本
SDKMAN 支持主流发行版:Temurin(Eclipse)、OpenJDK、Amazon Corretto、GraalVM、Zulu 等。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 列出所有可选 JDK:
sdk list java(带installed标记的是已装版本) - 安装指定版本,例如 Temurin 17:
sdk install java 17.0.12-tem - 安装 GraalVM 21:
sdk install java 21.0.3-graal - 安装后会自动设为当前会话版本,也可用
sdk current java查看
切换与设置默认版本
SDKMAN 提供两种切换粒度:临时会话级和全局默认级。
- 仅在当前终端生效:
sdk use java 11.0.22-tem - 设为所有新终端默认版本:
sdk default java 17.0.12-tem - 查看当前正在使用的 JDK:
sdk current java - 查看所有已管理的 SDK 及其状态:
sdk current
卸载与维护
不用的版本可随时清理,不影响其他版本。
- 卸载某个 JDK:
sdk uninstall java 8.0.362-zulu - 强制卸载(含残留):
sdk uninstall java 8.0.362-zulu --force - 更新 SDKMAN 自身:
sdk selfupdate - 查看帮助:
sdk help或sdk help list
SDKMAN 默认将所有 JDK 安装在 ~/.sdkman/candidates/java/ 下,每个版本独立目录,互不干扰。配合 sdk default 和 sdk use,多项目并行开发时无需反复修改环境变量,也不用担心全局污染。

















