惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
N
Netflix TechBlog - Medium
Google Online Security Blog
Google Online Security Blog
月光博客
月光博客
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
M
MIT News - Artificial intelligence
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
MongoDB | Blog
MongoDB | Blog
H
Help Net Security
The Cloudflare Blog
Blog — PlanetScale
Blog — PlanetScale
F
Full Disclosure
G
Google Developers Blog
罗磊的独立博客
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
A
About on SuperTechFans
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
GbyAI
GbyAI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
The Register - Security
The Register - Security
U
Unit 42
D
Docker
Martin Fowler
Martin Fowler
L
LINUX DO - 热门话题
NISL@THU
NISL@THU
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
博客园_首页
Google DeepMind News
Google DeepMind News

林间拾语

搜个微信客服被骗1900块,315曝光的“AI投毒”套路防不胜防 🌿 林间第5页拾语:OpenClaw 龙虾真的是刚需吗? 🌿 林间第4页拾语:再见 2025 Halo 2.22.x 插件集成 Redis 完整指南 告别等待!Halo在线客服插件,让网站沟通秒回时代 Halo 2.21.x 登录弹窗:从后端机制到前端实现 🌿 林间第3页拾语:把事情做好,把自己照顾好 从 0 到熟练:Mermaid 流程图的进阶之路 智阅AI助手第四次重构上线:这次把“摘要”两个字删掉了 禅导航 v2 升级:彻底重构,只为更好用 谈谈SEO:什么是SEO,如何做好SEO,及需要注意的事项 🌿 林间第2页拾语:糟心事很少,懂你的人刚好够 智阅 GPT V3 版本:全面升级,让内容精髓触手可及 全面了解腾讯 EdgeOne 边缘加速:加速网站并提高用户体验 数字隐私与数据安全:推销电话背后的隐私泄露风险 两个小插件偷偷上线了:SEO 时间因子 & 公告弹窗 🌿 林间第1页拾语:光没来前,咱先煮点饭吧 Halo插件|一个面向创作者的多功能AI媒体处理工具集 林间拾语|一次命名的回归,也是一种自我表达
MacOS 和 Linux 使用 SDKMAN 管理 Java 工具链
Handsome · 2025-06-19 · via 林间拾语

Java 多版本环境的管理,一直是开发过程中容易踩坑的环节。JDK 8、JDK 11、JDK 17、JDK 21,项目环境各不相同,频繁切换 JDK,手动改 JAVA_HOME 太麻烦了。

这时候,如果你用的是 macOS 或 Linux 系统,请毫不费力地用上它:

SDKMAN!—— Java 工具链版本管理的利器

这篇文章会一步步教你如何使用 SDKMAN 来安装、切换、维护多个版本的 JDK,并顺序说说 Maven、Gradle、Kotlin 等也能一并管理。

感谢 johnniang 提供此方案思路参考。

SDKMAN 是一个命令行工具,用来安装和管理 Java 世界的各种开发工具,支持:

  • 安装多个版本的 JDK

  • 切换默认 JDK,不用手动修改环境变量

  • 安装和管理 Maven、Gradle、Kotlin、SBT、GraalVM 等等

  • 跨 Linux/macOS 平台通用,配置文件清晰可控

📂 官网地址:https://sdkman.io

📦 系统支持情况

系统

支持情况

推荐程度

macOS (Intel/Apple M系列)

✅ 完全支持

⭐⭐⭐⭐⭐

Linux (Ubuntu, Debian, CentOS, Rocky...)

✅ 完全支持

⭐⭐⭐⭐⭐

Windows(CMD/PowerShell)

❌ 不支持

🚫

Windows(Git Bash/WSL)

⭕ 可变通

⭐⭐(适合进阶用户)


🛠️ 准备工作

在开始之前,请确认你系统中已安装以下基础工具:

工具

检查方式

无法执行时安装方法

curl

curl --version

sudo apt install curl / brew install curl

zipunzip

zip --version

sudo apt install zip unzip / brew install unzip

git

git --version

sudo apt install git / brew install git

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

✅ 常用命令总结

命令

作用

sdk list java

查看所有可用 JDK

sdk install java <版本>

安装指定版本

sdk use java <版本>

临时切换版本

sdk default java <版本>

设置全局默认版本

sdk uninstall java <版本>

卸载 JDK

sdk current java

查看当前正在使用的版本


❓常见问题 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 重启电脑

只需几条命令,安装、切换、验证一气呵成。


📎 参考链接