1. 概述
随着 Java 发布周期的加快,开发人员经常需要在本地环境同时维护多个 JDK 版本或不同厂商的构建版本。手动管理 PATH
环境变量不仅繁琐,还容易出错,堪称日常开发中的经典“踩坑”场景。
本文将介绍如何使用 SDKMAN! 轻松管理 SDK 的安装、切换和卸载,彻底告别版本混乱问题。
2. 什么是 SDKMAN!
✅ SDKMAN! 是一个用于管理多个 SDK 多版本并行的命令行工具,SDKMAN! 将这些可管理的工具称为 “candidates”(候选者)。
它提供了一套简洁的 CLI 和 API,支持对候选者进行:
- 列出可用版本(list)
- 安装(install)
- 切换(use / default)
- 卸载(uninstall)
⚠️ 关键优势在于:它会自动帮你配置好环境变量,无需手动修改 JAVA_HOME
或 PATH
。
支持的 JVM 生态工具非常丰富,包括:
- 语言类:Java、Groovy、Scala、Kotlin
- 构建工具:Maven、Gradle、SBT
- 框架/平台:Spring Boot、Vert.x 等
SDKMAN! 本身是一个开源、轻量级的 Bash 工具,跨平台支持良好,适用于所有主流 Unix 系统(macOS、Linux、WSL),并兼容 Bash 和 Zsh。
3. 安装 SDKMAN!
SDKMAN! 安装过程简单粗暴,只需一条 curl
命令:
$ curl -s "https://get.sdkman.io" | bash
执行后按提示完成安装即可。
⚠️ 注意:确保系统已安装
zip
和unzip
工具,否则安装可能失败。
安装完成后,需手动加载环境变量(或新开终端):
$ source "$HOME/.sdkman/bin/sdkman-init.sh"
验证是否安装成功:
$ sdk version
SDKMAN 5.8.5+522
如果能看到版本号,说明安装成功 ✅。
查看所有可用命令:
$ sdk help
更多自定义配置可参考官网文档:https://sdkman.io/install
4. 查看所有可用 SDK
使用 list
命令查看所有支持的 SDK 候选者:
$ sdk list
输出示例:
=====================================================
Available Candidates
=====================================================
q-quit /-search down
j-down ?-search up
k-up h-help
-----------------------------------------------------
Java (11.0.7.hs-adpt) https://zulu.org
...
$ sdk install java
-----------------------------------------------------
Maven (3.6.3) https://maven.apache.org
...
$ sdk install maven
-----------------------------------------------------
Spring Boot (2.3.1.RELEASE) http://spring.io
...
$ sdk install springboot
------------------------------------------------------
...
每个条目包含:
- SDK 名称与默认版本
- 官方网站链接
- 安装命令提示
📌 提示:括号中标注的版本通常是稳定版或 LTS 版本,适合生产使用。
5. Java 版本管理
5.1 查看 Java 可用版本
列出所有可用的 Java 版本:
$ sdk list java
输出示例:
===================================================================
Available Java Versions
===================================================================
Vendor | Use | Version | Dist | Status | Identifier
-------------------------------------------------------------------
AdoptOpenJDK | | 14.0.1 | adpt | | 14.0.1.j9-adpt
...
Amazon | | 11.0.8 | amzn | | 11.0.8-amzn
...
Azul Zulu | | 14.0.2 | zulu | | 14.0.2-zulu
...
BellSoft | | 14.0.2 | librca | | 14.0.2.fx-librca
...
GraalVM | | 20.1.0 | grl | | 20.1.0.r11-grl
...
Java.net | | 16.ea | open | | 16.ea.6-open
...
SAP | | 14.0.2 | sapmchn | | 14.0.2-sapmchn
...
字段说明:
- Vendor:JDK 提供商
- Use:当前使用的版本标记(
>>>
) - Version:语义化版本号
- Dist:分发简称(如
zulu
,amzn
) - Identifier:安装时使用的唯一标识符
5.2 安装指定 Java 版本
以安装 Azul Zulu 的 Java 14 为例:
$ sdk install java 14.0.2-zulu
执行过程如下:
Downloading: java 14.0.2-zulu
In progress...
########### 100.0%
Repackaging Java 14.0.2-zulu...
Done repackaging...
Installing: java 14.0.2-zulu
Done installing!
Setting java 14.0.2-zulu as default.
✅ 安装完成后,SDKMAN! 会自动设置环境变量,立即生效。
你也可以安装自定义 JDK 构建(比如公司内部版本):
$ sdk install java custom-8 ~/Downloads/my-company-jdk-custom-8
5.3 切换 Java 版本
版本切换分两种场景:
- 临时切换(仅当前终端会话有效):
$ sdk use java 14.0.1.j9-adpt
- 永久设为默认:
$ sdk default java 14.0.1.j9-adpt
✅ 推荐使用 default
设置主版本,避免每次重开终端都要重新 use
。
5.4 卸载指定版本
卸载已安装的 JDK 版本:
$ sdk uninstall java 14.0.1.j9-adpt
⚠️ 注意:不能卸载当前正在使用的版本,需先切换。
5.5 查看当前使用版本
查看当前激活的 Java 版本:
$ sdk current java
Using java version 14.0.2-zulu
等价于执行:
$ java -version
查看所有 SDK 的当前使用状态:
$ sdk current
Using:
java: 14.0.2-zulu
gradle: 6.2.2
6. 与 IDE 集成
SDKMAN! 所有 SDK 默认安装路径为:
~/.sdkman/candidates/
例如 Java 版本存放路径:
~/.sdkman/candidates/java/
查看目录结构:
$ ls -al ~/.sdkman/candidates/java/
total 0
drwxrwxrwx 1 user user 12 Jul 25 20:00 .
drwxrwxrwx 1 user user 12 Jul 25 20:00 ..
drwxrwxr-x 1 user user 12 Jul 25 20:00 14.0.2-zulu
lrwxrwxrwx 1 user user 14 Jul 25 20:00 current -> 14.0.2-zulu
📌 current
是一个软链接,指向当前激活的版本,方便 IDE 识别。
6.1 IntelliJ IDEA
在 IntelliJ 中配置 SDK:
- 打开 Project Structure → Project Settings
- 在 Project SDK 中选择 New…
- 选择 JDK,然后浏览到 SDKMAN! 路径,例如:
~/.sdkman/candidates/java/14.0.2-zulu
构建工具(Maven/Gradle)也可指定版本:
💡 小技巧:确保 Gradle 或 Maven 使用的 Java 版本与项目 SDK 一致,避免编译兼容性问题。
6.2 Eclipse
在 Eclipse 中配置:
- 右键项目 → Properties → Java Build Path → Libraries
- 点击 Add Library… → JRE System Library → Next → Alternate JRE → Installed JREs…
或全局配置:
- Window → Preferences → Java → Installed JREs
- 点击 Add…,选择标准 VM,路径填写:
~/.sdkman/candidates/java/14.0.2-zulu
7. 总结
SDKMAN! 是 JVM 开发者的必备效率工具,尤其适合需要频繁切换 Java 版本、使用多种构建工具的场景。
它解决了以下痛点:
- ❌ 手动管理
JAVA_HOME
和PATH
- ❌ 不同项目依赖不同 JDK 版本
- ❌ 安装包下载、解压、配置流程重复
✅ 一行命令安装,自动配置环境,无缝对接主流 IDE,真正实现“开箱即用”。
如果你还在手动管理 JDK 版本,强烈建议尝试 SDKMAN!,几分钟就能提升你的开发体验。