背景
[sdkman 官网]是这么介绍它的:
SDKMAN! is a tool for managing parallel versions of multiple Software Development Kits on most Unix based systems.
sdkman 是一个用来管理大多数类 Unix 系统(例如 Mac OSX、Linux、Cygwin等) SDK 多版本的。例如,现在个人机器上主要还是使用 JDK8 的版本,但是,突然有个项目(比如新版 Elasticsearch 7.10)需要更高版本的 JDK 版本,这时候怎么方便管理你机器上的 JDK 环境呢?
看完下文的操作,你就会用 sdkman 来灵活切换你 SDK 的版本,真的方便!
安装 sdkman
安装 sdkman:1
curl -s "https://get.sdkman.io" | bash
打开新的终端窗口:1
source "$HOME/.sdkman/bin/sdkman-init.sh"
验证安装:1
sdk version
常用命令
sdkman 支持多达大约 29 个软件开发包管理,我们也可以使用 命令来查看支持的完整列表:1
sdk list
这个内容比较多,可以使用例如 sdk list java
列出我感兴趣的 candidate
版本。
官网 SDKS 页面列举了大部分可用的 sdk,但是并不完整,比如 Java 就没列举在这里。
安装指定的版本:1
2
3
4# 安装 java 16 版本
sdk install java 16.0.0.hs-adpt
# 安装 java 8 版本
sdk install java 8.0.352-amzn
安装时,可以使用
sdk install java 8 [tab键]
就可以列出可选的版本
临时使用指定版本(关闭终端之后失效):1
2
3sdk use java 8.0.352-amzn
设置默认版本:
sdk default java 8.0.352-amzn1
2
查看当前使用的版本:
查看 java 当前版本
sdk current java
查看所有版本
sdk current1
2
卸载指定版本的包:
sdk uninstall java 16.0.0.hs-adpt1
2
3
4
> 如果卸载之后想再次安装之前通过 sdkman 卸载的版本,此时不会再次重新下载,会提示 `Found a previously downloaded java 11.0.7.hs-adpt archive. Not downloading it again...`,因为之前删除操作并没有真正的从你计算机上删除源压缩包文件
清理:
清理广播消息
sdk flush broadcast
清理下载的 sdk 二进制文件
sdk flush archives
清理临时文件内容
sdk flush temp1
2
升级 sdkman
sdk selfupdate1
2
3
4
## FAQ
### 管理本地已经安装的 JDK 版本:
sdk install java 1.8.0_231 /Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home`
其实就是在
/Users/michael/.sdkman/candidates/java
路径下,创建一个软连接1.8.0_231
指向了机器原本的 JDK 安装目录
参考
- sdkman/Usage
- segmentfault/如何在一台计算机上安装多个 JDK 版本
- segmentfault/Java升级那么快,多个版本如何灵活切换和管理?