Windows 安装 SDKMAN:最稳妥的办法、替代方案和常见问题一次讲明白
目标关键词:Windows 安装 SDKMAN
很多人第一次搜“Windows 安装 SDKMAN”,都会以为这是一个像 JDK、Maven 那样能直接在 Windows 上一键装好的工具。实际上,SDKMAN 原生主要面向的是 Linux / macOS 环境,Windows 不能直接原生安装并正常使用,这也是大多数人卡住的地方。
如果你是在 Windows 电脑上做 Java、Kotlin、Groovy、Scala 这类开发,想用 SDKMAN 来管理多个版本的 JDK、Maven、Gradle,最稳妥的做法不是硬装,而是选择适合 Windows 的替代方案,或者通过 WSL 间接使用。
下面我按“问题分析 → 解决方案 → 注意事项”的方式,给你讲清楚。
一、问题分析:为什么 Windows 上装不了原版 SDKMAN?
SDKMAN 的设计逻辑是:
- 依赖类 Unix 环境;
- 依赖 bash、curl、unzip、zip 等常见命令;
- 默认使用 Linux/macOS 的目录结构和 shell 习惯;
- 安装脚本、环境变量配置方式,也更偏向 Unix 系统。
而 Windows 原生环境里:
- 没有 bash 作为默认 shell;
- 目录分隔符、权限机制、环境变量逻辑不同;
- 某些脚本和软链接行为不兼容;
- SDKMAN 官方也没有把 Windows 当作原生支持目标。
所以结论很明确:
Windows 上不能像 Linux 那样直接原生安装 SDKMAN。
但这不代表没办法用,只是要换思路。
二、解决方案:Windows 上想用 SDKMAN,有 3 条路
方案一:用 WSL 安装 SDKMAN(最接近原生体验,推荐)
如果你是 Windows 10 / Windows 11 用户,最推荐的方式就是:
先安装 WSL,再在 Linux 子系统里安装 SDKMAN。
这相当于在 Windows 里开了一个 Linux 环境,SDKMAN 就能正常跑。
1. 安装 WSL
以管理员身份打开 PowerShell,执行:
wsl --install
如果提示需要重启,重启电脑即可。
如果你想指定 Ubuntu,也可以:
wsl --install -d Ubuntu
安装完成后,打开 Ubuntu 终端,设置用户名和密码。
2. 更新系统依赖
进入 WSL 的 Ubuntu 后,执行:
sudo apt update
sudo apt upgrade -y
sudo apt install curl zip unzip -y
这几个工具对 SDKMAN 很重要。
3. 安装 SDKMAN
执行:
curl -s "https://get.sdkman.io" | bash
安装完成后,按提示执行:
source "$HOME/.sdkman/bin/sdkman-init.sh"
然后检查是否成功:
sdk version
如果显示版本号,说明安装成功。
4. 使用 SDKMAN 管理 JDK
比如查看可安装的 JDK:
sdk list java
安装某个版本,例如 Temurin 17:
sdk install java 17.0.10-tem
切换版本:
sdk use java 17.0.10-tem
设置默认版本:
sdk default java 17.0.10-tem
查看当前 Java:
java -version
5. 配合 Windows 使用的注意点
WSL 里的 SDKMAN 管的是 WSL 内部环境,不是 Windows 原生环境。
也就是说:
- WSL 终端里能用 SDKMAN;
- Windows CMD / PowerShell 里不一定直接生效;
- 如果你的开发工具是 IntelliJ IDEA、VS Code,记得检查它们到底是调用 Windows 的 Java,还是 WSL 里的 Java。
如果你只是做 Linux 环境开发、服务器环境模拟、脚本测试,WSL 方案非常合适。
三、方案二:Windows 原生用 SDK 版本管理替代工具
如果你只是想在 Windows 上切换 JDK、Maven、Gradle 版本,其实没必要执着于 SDKMAN。下面这些工具更适合 Windows。
1. 用 jabba 管理 Java 版本
jabba 是一个跨平台的 Java 版本管理工具,Windows 也能用。
安装后可以像 SDKMAN 一样切换多个 JDK。
常见用法:
jabba install temurin@17
jabba use temurin@17
优点:
- Windows 支持更友好;
- 管理 Java 很方便;
- 跨平台体验不错。
缺点:
- 对 Maven、Gradle 这类工具的管理不如 SDKMAN 全面。
2. 用 Scoop 管理开发工具
如果你常用 Windows 开发环境,Scoop 是非常实用的工具。
安装后可以直接装:
- JDK
- Maven
- Gradle
- Git
- Node.js
- Python
安装 Scoop 的命令:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex
然后安装工具,例如:
scoop install openjdk17
scoop install maven
scoop install gradle
优点:
- Windows 原生支持好;
- 安装简单;
- 适合日常开发。
缺点:
- 不是 SDKMAN 的同类体验;
- 对“切换版本”的管理不如 SDKMAN 那么集中。
3. 用 Chocolatey
Chocolatey 也是 Windows 上很常见的软件包管理器。
例如安装 Java:
choco install temurin17
适合企业 Windows 环境、批量部署场景。
四、如果你一定要“在 Windows 上用 SDKMAN”,最推荐的实际方案
这里直接给你一个结论:
场景 1:你主要做 Linux/服务器开发
推荐:WSL + SDKMAN
这是最接近原版 SDKMAN 的方案,兼容性最好。
场景 2:你主要做 Windows 本地开发
推荐:Scoop 或 jabba
如果你主要在 Windows 上跑 IntelliJ IDEA、Eclipse、VS Code,Scoop 和 jabba 会更省心。
场景 3:你既想要 Windows 方便,又想要 Linux 环境
推荐:Windows + WSL 双环境
- Windows 里装 IDE;
- WSL 里装 SDKMAN;
- 编译、测试、脚本放在 WSL 里跑;
- 本地编辑仍然用 Windows 工具。
这个组合很实用。
五、完整实操:WSL 下安装 SDKMAN 的一步一步教程
下面给你一个适合小白的完整流程。
第一步:确认系统版本
按下 Win + R,输入:
winver
查看你是不是 Windows 10 或 Windows 11。
如果是较新的版本,WSL 基本都能用。
第二步:开启 WSL
以管理员身份打开 PowerShell,执行:
wsl --install
等待安装完成并重启。
如果提示没有发行版,也可以手动装 Ubuntu:
wsl --install -d Ubuntu
第三步:打开 Ubuntu
在开始菜单里搜索 Ubuntu,点开后会进入 Linux 终端。
首次启动需要创建用户名和密码。
第四步:安装依赖
执行:
sudo apt update
sudo apt install curl zip unzip -y
第五步:安装 SDKMAN
执行:
curl -s "https://get.sdkman.io" | bash
安装后执行:
source "$HOME/.sdkman/bin/sdkman-init.sh"
再检查:
sdk version
第六步:安装 JDK
先查看可用版本:
sdk list java
找到你要的版本后安装,比如:
sdk install java 17.0.10-tem
然后切换默认版本:
sdk default java 17.0.10-tem
确认:
java -version
六、常见问题排查
1. sdk: command not found
原因通常是 SDKMAN 没有初始化成功。
解决方法:
source "$HOME/.sdkman/bin/sdkman-init.sh"
如果每次打开终端都要手动执行,可以把这句加到 ~/.bashrc:
echo 'source "$HOME/.sdkman/bin/sdkman-init.sh"' >> ~/.bashrc
source ~/.bashrc
2. curl: command not found
说明缺少 curl,安装:
sudo apt install curl -y
3. 下载很慢或失败
可能是网络问题,建议:
- 检查代理;
- 更换网络;
- 先确认能访问
https://get.sdkman.io; - WSL 环境下必要时配置代理。
4. JDK 装了但 IDEA 里没生效
这是最常见的问题之一。
原因是:
- SDKMAN 装在 WSL 里;
- IDEA 可能调用的是 Windows 里的 Java。
解决方法:
- 检查 IDEA 的 Project SDK;
- 检查 Windows 环境变量
JAVA_HOME; - 如果你想让 Windows 里的程序使用 JDK,建议把 JDK 直接装在 Windows 侧,而不是只装在 WSL 里。
七、Windows 开发环境的推荐搭配
如果你平时做 Java 开发,最省心的搭配一般是:
方案 A:纯 Windows
- Scoop 或 Chocolatey
- 安装 JDK、Maven、Gradle
- IDE 直接使用 Windows 环境
适合:
- 日常开发
- 公司办公电脑
- 不想折腾 WSL 的用户
方案 B:Windows + WSL
- Windows 负责图形界面和 IDE
- WSL 负责 SDKMAN、Linux 命令、脚本环境
适合:
- 需要模拟服务器环境
- 经常接触 Linux 部署
- Java 后端开发、脚本开发
方案 C:开发机直接 Linux
如果你主要就是做后端、运维、容器、服务器开发,直接装 Linux 往往更顺手,SDKMAN 也最自然。
八、注意事项:别踩这些坑
1. 不要直接在 Windows CMD 里照搬 Linux 安装命令
像下面这种:
curl -s "https://get.sdkman.io" | bash
这句命令不能直接在 Windows CMD 或 PowerShell 里执行成功,必须在 WSL 的 Linux 终端里跑。
2. 不要把 WSL 和 Windows 环境混为一谈
WSL 里安装的工具,只对 WSL 生效。
Windows 侧程序是否能调用,要看你有没有额外配置。
3. 如果只想管理 Java,没必要强上 SDKMAN
Windows 用户直接用:
- Scoop
- jabba
- Chocolatey
通常更简单。
4. IDE 的 SDK 路径要分清楚
你在 IDEA 里看到的 JDK 路径,可能是:
- Windows 路径:
C:\Program Files\Java\... - WSL 路径:
/home/xxx/.sdkman/candidates/java/...
这两个不是一回事。
九、总结
如果你搜索的是 Windows 安装 SDKMAN,最关键的一句话就是:
SDKMAN 不能在 Windows 原生环境直接安装,推荐通过 WSL 使用,或者改用 Windows 原生替代工具。
最实用的选择是:
- 想原汁原味用 SDKMAN:Windows + WSL
- 想在 Windows 里省事管理 Java:jabba / Scoop / Chocolatey
- 主要做 Linux 开发:直接 WSL 或 Linux 更合适
对于大多数 Windows 用户来说,WSL + SDKMAN 是最接近“既保留 Windows,又能用 SDKMAN”的方案。

还没有评论,来说两句吧...