官方网站:https://sdkman.io/
安装 sdkman
下载并安装:
# 下载并安装
curl -s "https://get.sdkman.io" | bash
接下来输入
# 可选操作:生效环境变量,不执行下面的命令也行,新开一个终端即可生效环境变量
source "$HOME/.sdkman/bin/sdkman-init.sh"
安装成功后,查看 sdk 版本:
sdk version
多版本 JDK
为了研究源码方便,有时需要安装其他版本的 JDK,但是又不想卸载电脑默认的 JDK 版本,此时使用 sdkman,查询 JDK 版本:
sdk list java
或者
sdk ls java
通过sdk list java
命令,查看支持的JDK时,可以看到最后一列Identifier
,这一列内容是我们安装的时候要使用的
安装指定版本的jdk,例如JDK21:
sdk install java 21.0.2-open
安装成功后 sdkman 会自动配置 JAVA_HOME 和 PATH 等环境变量,可以通过 Java -version 命令验证。
sdkman 会重写之前配置的 JAVA_HOME。
将 sdkman 指向已安装 Java 版本
如果在你安装 SDKMan 之前本地电脑已经安装了 JDK 版本,默认是无法识别到的,那么你需要进行以下配置才能让 SDKMan 识别已安装的版本,首先,第一步你要先找到你的 Java 安装目录,我本地 Mac 的安装目录是 /opt/homebrew/Cellar/openjdk@11/11.0.16.1_1/bin,然后使用命令 ln -s 来为 Java 安装目录建立符号链接。
ln -s /opt/homebrew/Cellar/openjdk@11/11.0.16.1_1/bin ~/.sdkman/candidates/java/openjdk@11/11.0.16.1_1/bin
sdkman 的使用
命令 | 说明 |
---|---|
sdk help | 查看命令帮助 |
sdk update | 更新 sdkman |
sdk default java 11.0.7.hs-adpt | 设置默认的 JDK 版本 |
sdk install [version] | 安装指定版本 |
sdk uninstall [version] | 卸载指定版本 |
sdk use | 切换为指定版本。 |
查看当前使用的版本
sdk current java
#查看所有本地包的当前版本
$ sdk current
sdk版本升级
sdk upgrade springboot
# 本地所有sdk全部升级
sdk upgrade
SDKMAN!版本升级
sdk selfupdate
# 强制重新安装
sdk selfupdate force
默认jdk提示无法删除
强制删除
sdk uninstall java 21.0.2-open --force
常用命令
# 安装最新稳定版本的java sdk
$ sdk install java
# 安装指定版本的java sdk
$ sdk install java 11.0.5-open
# 安装指定版本的java sdk至指定的本地目录
$ sdk install java 11.0.5-open /path/to/java
# 卸载已安装的SDK,需要指定版本号
$ sdk uninstall java 11.0.5-open
# 显示所有的SDK
$ sdk list
# 显示所有java sdk版本
$ sdk list java
# 切换指定的版本
$ sdk use java 11.0.5-open
# 将某个版本设置为默认版本(全局生效)
$ sdk default java 11.0.5-open
# 查看安装地址
$ sdk home java 11.0.16-zulu
# 查询已安装的SDK版本
$ sdk current java
# 获取最新的SDK版本通知
$ sdk broadcast
# 开启脱机模式
$ sdk offline enable
# 关闭脱机模式
$ sdk offline disable
# 更新sdkman,若当前已经是最新版本将不执行更新
$ sdk selfupdate
# 更新sdkman,若当前已经是最新版本将重新安装
$ sdk selfupdate force
SDKMAN的配置
SDKMAN还有一些基础配置,其配置文件位于:~/.sdkman/etc/config
,一般不太修改。但如果碰到问题,可以在这里开启debug模式等功能。
# make sdkman non-interactive, preferred for CI environments
sdkman_auto_answer=true|false
# check for newer versions and prompt for update
sdkman_selfupdate_feature=true|false
# disables SSL certificate verification
# https://github.com/sdkman/sdkman-cli/issues/327
# HERE BE DRAGONS....
sdkman_insecure_ssl=true|false
# configure curl timeouts
sdkman_curl_connect_timeout=5
sdkman_curl_continue=true
sdkman_curl_max_time=10
# subscribe to the beta channel
sdkman_beta_channel=true|false
# enable verbose debugging
sdkman_debug_mode=true|false
# enable colour mode
sdkman_colour_enable=true|false
# enable automatic env
sdkman_auto_env=true|false
# enable bash or zsh auto-completion
sdkman_auto_complete=true|false
SDKMAN在Homebrew中的安装和使用
$ brew tap sdkman/tap
$ brew install sdkman-cli
成功安装后,将以下行添加到 .bash_profile 的末尾
export SDKMAN_DIR=$(brew --prefix sdkman-cli)/libexec
[[ -s "${SDKMAN_DIR}/bin/sdkman-init.sh" ]] && source "${SDKMAN_DIR}/bin/sdkman-init.sh"
然后可运行sdk version 查询版本
删除sdkman
(可选)备份然后删除安装
$ tar zcvf ~/sdkman-backup_$(date +%F-%kh%M).tar.gz -C ~/ .sdkman
$ rm -rf ~/.sdkman
从 shell 配置中删除初始化片段。编辑并删除 .bashrc、.bash_profile 和/或 .profile 文件中的初始化片段。如果您使用 ZSH,请将其从 .zshrc 文件中删除。要删除的代码片段如下所示:
#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
#这必须位于文件末尾才能让 SDKMAN 工作!!!
[[ -s "/home/dudette/.sdkman/bin/sdkman-init.sh" ]] && source "/home/dudette/.sdkman/bin/sdkman-init.sh"