WSL2 / Ubuntu 下用 SDKMAN 管理多版本 Java
在 WSL2 + Ubuntu 做 Java 后端开发时,经常会遇到这种组合:
- 老项目还在 Java 8
- 新项目已经是 Java 17 / 21
- 同一台机器、同一个终端,需要随时切换 JDK 版本
- Maven、脚手架脚本、命令行工具都要跟着走
如果你还在来回改 JAVA_HOME,强烈建议上 SDKMAN。
一、SDKMAN 是什么,为什么适合 WSL2?
SDKMAN(Software Development Kit Manager)是 Linux/WSL 下专门用来管理多版本 JDK/SDK 的命令行工具。
它的几个关键特性非常适合日常开发:
- 同时安装多个 Java 版本(8/11/17/21 随便切)
- 一行命令切换 JDK,立刻生效
- 支持「项目级」固定 Java 版本(靠
.sdkmanrc) - 不污染系统全局环境变量
- Maven、Gradle、脚本直接跟随当前
java
对 WSL2 开发者来说,这几乎是目前体验最佳的多 JDK 管理方案。
二、在 Ubuntu / WSL2 安装 SDKMAN(一劳永逸)
在你的 Ubuntu / WSL2 终端中执行(保持网络能访问外网):
curl -s "https://get.sdkman.io" | bash
安装完成后,加载环境(新开终端也可以):
source "$HOME/.sdkman/bin/sdkman-init.sh"
验证是否安装成功:
sdk version
如果能正常输出版本信息,说明 SDKMAN 已经装好了。
三、用 SDKMAN 安装多个 Java 版本
1. 查看可用 Java 版本
sdk list java
常见推荐(以 Temurin 为例):
- Java 8:
8.0.xxx-tem - Java 17:
17.0.xxx-tem
2. 安装 Java 8 和 Java 17(示例)
sdk install java 8.0.392-tem
sdk install java 17.0.10-tem
查看本机已安装的版本:
sdk list java | grep installed
到这一步,你的 WSL2 环境里已经有多套 JDK 可以随时切换了。
四、全局切换 Java 版本(当前终端立即生效)
想在当前终端切到 Java 17:
sdk use java 17.0.10-tem
验证一下:
java -version
javac -version
效果是:

