核心是将 sdkman 初始化脚本写入 ~/.zshrc 并执行 source 加载,确保每次终端启动自动配置环境变量;验证需依次检查 shell 类型、.zshrc 是否含 source 行、which sdk 路径、path 中 sdkman 的 bin 目录是否优先、java -version 输出是否匹配所设 jdk 版本。
在 macos 的 zsh 中集成 sdkman,核心是让每次打开终端都能自动加载 sdkman 的环境变量和命令。这一步不做,sdk 命令就不可用,java 也依然指向系统默认 jdk。
确认 shell 类型并写入初始化脚本
macOS Catalina 及之后版本默认使用 zsh,所以你要把 SDKMAN 的初始化命令加到 ~/.zshrc 里:
- 执行:
echo 'source "$HOME/.sdkman/bin/sdkman-init.sh"' >> ~/.zshrc - 立即生效:
source ~/.zshrc - 验证是否成功:
sdk version应输出类似SDKMAN 5.18.0
检查初始化是否真正生效
常见失败情况是脚本被写入了错误的配置文件(比如误写进 .bash_profile),或安装后没运行 source。新开一个终端后,运行以下命令确认:
部署和使用军舰的 macOS Automator 自动化服务集合。包含 5 个实用工作流:PDF转JPG、PNG重命名并转JPG、图像拼接、解压RAR、顺序命名图像文件。一键安装所有服务到 ~/Library/Services/ 目录。使用场景:(1) "安装我的自动化服务",(2) "部署所有 Automato...
-
echo $SHELL确保是/bin/zsh -
cat ~/.zshrc | grep sdkman看是否已存在那行 source -
which sdk应返回~/.sdkman/bin/sdk
避免 PATH 冲突导致 JDK 切换失效
即使 sdk default 成功,如果 $PATH 里有其他 JDK 路径排在前面,java -version 仍不会变。你需要:
- 运行
echo $PATH,确认~/.sdkman/candidates/java/current/bin出现在最前面 - 检查
~/.zprofile、/etc/profile或/etc/zshrc是否硬编码了JAVA_HOME或PATH,有的话注释掉 - SDKMAN 自动设置
JAVA_HOME,外部手动设置会覆盖它
验证 Java 版本是否真正受控
完成配置后,装一个 JDK 并切换,再验证终端行为是否符合预期:
sdk install java 21.0.3-temsdk default java 21.0.3-tem- 新开终端,运行:
java -version和javac -version,输出应一致且含 “Temurin” -
which java应指向~/.sdkman/candidates/java/current/bin/java










