在Java开发过程中,不同项目往往对JDK版本有不同要求,比如老项目可能依赖JDK 8,新项目需要使用JDK 17或者JDK 21,手动修改环境变量切换版本不仅步骤繁琐,还容易出现配置冲突的问题。SDKMAN作为一款轻量级的跨平台SDK管理工具,能够很好地解决这个痛点,支持在多种操作系统上快速安装、切换、卸载不同版本的JDK,让多JDK环境管理变得简单高效。

SDKMAN简介与安装
SDKMAN全称Software Development Kit Manager,最初是为管理Java生态的SDK设计的,现在也支持Groovy、Scala、Kotlin等多种开发工具的管理。它不需要管理员权限,安装过程简单,支持主流的操作系统。
安装前提
安装SDKMAN需要先确保系统中已经安装了curl或者wget,以及unzip和zip工具,大部分Linux发行版和macOS系统默认已经包含这些工具,Windows系统需要先安装WSL或者Git Bash环境。
安装步骤
打开终端执行以下命令即可完成安装:
# 使用curl安装 curl -s "https://get.sdkman.io" | bash # 如果使用wget,执行下面的命令 wget -qO- "https://get.sdkman.io" | bash
安装完成后,执行下面的命令让SDKMAN生效:
source "$HOME/.sdkman/bin/sdkman-init.sh"
可以通过下面的命令验证安装是否成功:
sdk version
如果输出SDKMAN的版本信息,说明安装成功。
使用SDKMAN管理JDK版本
查看可用的JDK版本
SDKMAN支持多个JDK发行版,比如Oracle JDK、OpenJDK、AdoptOpenJDK等,执行下面的命令可以查看所有可用的JDK版本:
sdk list java
输出结果会包含版本号、发行商、状态等信息,其中标识为installed的是已经安装的版本,标识为local only的是本地已有的版本。
安装指定JDK版本
找到需要安装的JDK版本标识符,比如要安装OpenJDK 17,对应的标识符是17.0.9-tem,执行下面的命令安装:
sdk install java 17.0.9-tem
安装过程中会提示是否将该版本设置为默认版本,输入Y确认即可,也可以之后手动设置。
切换JDK版本
如果需要临时切换到某个已安装的JDK版本,执行下面的命令:
sdk use java 8.0.392-tem
这个切换只对当前终端会话生效,关闭终端后会恢复原来的版本。如果需要永久切换默认JDK版本,执行下面的命令:
sdk default java 17.0.9-tem
查看当前使用的JDK版本
执行下面的命令可以查看当前终端会话使用的JDK版本:
java -version
也可以执行sdk current java查看SDKMAN当前管理的JDK版本。
卸载不需要的JDK版本
如果某个JDK版本不再需要,可以执行下面的命令卸载:
sdk uninstall java 11.0.21-tem
SDKMAN常用命令汇总
下面是SDKMAN管理JDK的常用命令整理:
| 命令 | 说明 |
|---|---|
| sdk list java | 列出所有可用的JDK版本 |
| sdk install java 版本标识符 | 安装指定版本的JDK |
| sdk use java 版本标识符 | 临时切换当前终端的JDK版本 |
| sdk default java 版本标识符 | 设置默认JDK版本 |
| sdk current java | 查看当前使用的JDK版本 |
| sdk uninstall java 版本标识符 | 卸载指定版本的JDK |
| sdk update | 更新SDKMAN的候选版本列表 |
| sdk upgrade java | 升级已安装的JDK到最新版本 |
注意事项
- SDKMAN安装的JDK默认存放在
~/.sdkman/candidates/java目录下,不需要手动修改系统的JAVA_HOME环境变量,SDKMAN会自动处理。 - 如果之前手动配置过
JAVA_HOME环境变量,建议注释掉相关配置,避免和SDKMAN的管理冲突。 - Windows系统下使用SDKMAN需要依赖WSL或者Git Bash等类Unix环境,直接在Windows命令提示符或者PowerShell中无法正常运行。
- 执行
sdk update可以获取最新的JDK版本列表,确保能够安装到最新的JDK版本。
SDKMAN除了管理JDK之外,还支持管理Maven、Gradle、Spring Boot CLI等多种开发工具,使用方法和管理JDK类似,只需要把命令中的java替换成对应的工具名称即可。