You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SDKMAN!管理已安装JDK?操作后状态异常求助

问题解决:SDKMAN!本地链接已有JDK后无法识别当前版本

问题描述

想要用SDKMAN!同时管理已安装的Java 17和待安装的Java 19,通过sdk install java [自定义名称] [JDK路径]本地链接Java 17后,SDKMAN!提示安装成功,但执行sdk current java始终返回「Not using any version of java」;执行sdk use java [自定义名称]虽提示操作成功,版本状态仍未更新,不过java -version显示的是目标JDK版本。

可能原因及解决方案

1. 确认SDKMAN!初始化脚本已正确加载

SDKMAN!需要在shell启动时加载初始化脚本,才能正常接管环境变量。检查你的shell配置文件(~/.bashrc、~/.zshrc或对应shell的配置文件),确保包含以下内容:

export SDKMAN_DIR="$HOME/.sdkman"
[[ -s "$SDKMAN_DIR/bin/sdkman-init.sh" ]] && source "$SDKMAN_DIR/bin/sdkman-init.sh"

如果没有,添加后执行source ~/.bashrc(或对应配置文件)重启shell环境。

2. 刷新SDKMAN!缓存

SDKMAN!可能未同步本地安装的版本信息,执行以下命令清空缓存:

sdk flush cache

之后执行sdk list java,应该能看到你本地链接的17.0.4.1-Bell版本。

3. 重新设置默认版本并验证

执行sdk default java 17.0.4.1-Bell将该版本设为全局默认,然后重启shell,再执行以下命令验证:

sdk current java
echo $JAVA_HOME

此时JAVA_HOME应指向SDKMAN!的链接路径(如~/.sdkman/candidates/java/17.0.4.1-Bell),sdk current java也会显示当前使用的版本。

4. 调整本地版本命名规范

SDKMAN!对本地安装的版本名称有长度限制(不超过15字符),建议遵循[版本号]-[厂商名]的小写格式,可尝试重新安装:

sdk uninstall java 17.0.4.1-Bell
sdk install java 17.0.4.1-bell /usr/lib/jvm/bellsoft-java17-full-amd64

再重复步骤2和3验证状态。

验证示例

完成操作后终端输出应类似:

john@NUC8i3BEH:~$ sdk current java
Using java version 17.0.4.1-bell
john@NUC8i3BEH:~$ echo $JAVA_HOME
/home/john/.sdkman/candidates/java/17.0.4.1-bell
john@NUC8i3BEH:~$ java -version
openjdk version "17.0.4.1" 2022-08-12 LTS
OpenJDK Runtime Environment (build 17.0.4.1+1-LTS)
OpenJDK 64-Bit Server VM (build 17.0.4.1+1-LTS, mixed mode, sharing)

内容的提问来源于stack exchange,提问作者John Knight

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:15:43