Java 多版本环境的管理,一直是开发过程中容易踩坑的环节。JDK 8、JDK 11、JDK 17、JDK 21,项目环境各不相同,频繁切换 JDK,手动改 JAVA_HOME 太麻烦了。
这时候,如果你用的是 macOS 或 Linux 系统,请毫不费力地用上它:
✅ SDKMAN!—— Java 工具链版本管理的利器
这篇文章会一步步教你如何使用 SDKMAN 来安装、切换、维护多个版本的 JDK,并顺序说说 Maven、Gradle、Kotlin 等也能一并管理。
感谢 johnniang 提供此方案思路参考。
什么是 SDKMAN?
SDKMAN 是一个命令行工具,用来安装和管理 Java 世界的各种开发工具,支持:
安装多个版本的 JDK
切换默认 JDK,不用手动修改环境变量
安装和管理 Maven、Gradle、Kotlin、SBT、GraalVM 等等
跨 Linux/macOS 平台通用,配置文件清晰可控
📂 官网地址:https://sdkman.io
📦 系统支持情况
🛠️ 准备工作
在开始之前,请确认你系统中已安装以下基础工具:
macOS 推荐先执行:
xcode-select --install
🚀 安装 SDKMAN
在 macOS 和 Linux 上的通用命令如下:
curl -s "https://get.sdkman.io" | bash
运行完成后,终端会提示你执行一条初始化命令:
source "$HOME/.sdkman/bin/sdkman-init.sh"
可以把上面那句加到你的 .bashrc
、.zshrc
或 .profile
文件中,实现开机自动加载。
✅ 验证安装是否成功
执行:
sdk version
如果能看到类似:
SDKMAN 5.16.0+123
说明安装成功。
☕ 安装并管理 JDK(Java)
查看所有可选的 JDK 版本:
sdk list java
你会看到一长串版本,满足:
Temurin、Zulu、Oracle、GraalVM
安装指定版本(例如 JDK 8 和 JDK 21):
sdk install java 8.0.392-zulu
sdk install java 21.0.2-tem
安装速度取决于你的网络环境,部分版本较大。
切换默认版本(全局生效):
sdk default java 21.0.2-tem
表示以后新打开的终端窗口都默认用 JDK 21。
临时切换(只在当前终端有效):
sdk use java 8.0.392-zulu
执行完这个命令后,再跑 java -version
就能看到你刚选的版本。
卸载某个版本:
sdk uninstall java 8.0.392-zulu
📂 JAVA_HOME 自动设置说明
使用 SDKMAN 安装 JDK 后,它会自动配置 JAVA_HOME
到:
$HOME/.sdkman/candidates/java/current
你可以验证:
echo $JAVA_HOME
一般不用你手动写 export JAVA_HOME=...
,除非你想显式声明。
🛠️ 除了 JDK,还能装什么?
SDKMAN 不只是 JDK 管理器,还能帮你管理以下工具:
sdk install maven
sdk install gradle
sdk install kotlin
sdk install sbt
sdk install micronaut
版本切换命令格式也一样:
sdk use gradle 7.6
sdk default maven 3.9.5
✅ 常用命令总结
❓常见问题 Q&A
1. SDKMAN 安装失败了?
检查网络(可能 curl 超时)
有时
.sdkman
目录被误删,重新安装即可检查是否执行了
source "$HOME/.sdkman/bin/sdkman-init.sh"
2. 我能同时装 8、11、17、21 四个版本吗?
当然可以,SDKMAN 设计之初就是为了支持多个版本并行的。
3. SDKMAN 能用在 Windows 吗?
不能原生使用 CMD / PowerShell,但你可以:
在 Windows 安装 WSL(Windows 子系统 Linux)
或使用 Git Bash + 手动设置 JAVA_HOME(建议初学者直接使用
.msi
安装包)ps:等我出差回去用win折腾一下试试
🧾 总结
在 macOS 和 Linux 下,统一使用 SDKMAN 管理 Java 工具链,是目前最省事、最稳定、最推荐的方案之一。
你不再需要:
手动找路径改环境变量
担心系统里多个版本冲突
为了换个 JDK 重启电脑
只需几条命令,安装、切换、验证一气呵成。
📎 参考链接
SDKMAN 官网:https://sdkman.io