Published on

SDKMAN 安装指南

Authors

SDKMAN 安装与配置指南

🧠 什么是 SDKMAN?

SDKMAN 是一个用于管理多个软件开发工具包版本的工具,特别是用于管理不同版本的 Java。它允许你在不同项目之间轻松切换不同的 JDK 版本。

💡

SDKMAN 不仅支持 Java,还支持 Kotlin、Scala、Gradle、Maven 等多种开发工具。

🎯 为什么需要 SDKMAN?

在开发过程中,我们经常需要处理多个项目,每个项目可能使用不同版本的 Java。SDKMAN 帮助我们:

  • 🔄 轻松切换 Java 版本
  • 🛠️ 统一团队开发环境
  • 🚀 简化工具安装和管理
  • 🔧 解决 Git Hooks 中的版本冲突问题
📖

如果您遇到了 Git Hooks 与多 JDK 环境的问题,可以参考我们的另一篇文章: Git Hooks与多JDK环境问题解决

⚙️ 安装 SDKMAN

🍎 macOS 和 Linux

打开终端

打开系统终端或 iTerm2

运行安装命令

执行 curl 命令下载并安装 SDKMAN

完成安装

按照屏幕提示完成安装过程

重新加载配置

重新加载 shell 配置文件

  1. 打开终端
  2. 运行安装命令
curl -s "https://get.sdkman.io" | bash
  1. 按照屏幕上的说明完成安装
  2. 重新加载 shell 配置
source "$HOME/.sdkman/bin/sdkman-init.sh"

🪟 Windows

使用 Git Bash 或 MSYS2

打开 Git Bash

打开 Git Bash 或 MSYS2 终端

运行安装命令

执行 curl 命令下载并安装 SDKMAN

完成安装

按照屏幕提示完成安装过程

重新加载配置

重新加载 shell 配置文件

  1. 打开 Git Bash 或 MSYS2 终端
  2. 运行安装命令
curl -s "https://get.sdkman.io" | bash
  1. 按照屏幕上的说明完成安装
  2. 重新加载 shell 配置
source "$USERPROFILE/.sdkman/bin/sdkman-init.sh"

使用 Windows PowerShell(替代方案)

如果不使用 Git Bash 或 MSYS2,可以考虑使用以下工具安装特定版本的 Java:

⚠️
Windows 用户建议使用 Git Bash 或 MSYS2 来获得最佳的 SDKMAN 体验。

📦 安装项目所需的 Java 版本

本项目使用 Java 8。安装 SDKMAN 后,运行以下命令安装所需的 Java 版本:

sdk install java 8.0.452-amzn

查看可用的 Java 版本

sdk list java

查看已安装的版本

sdk list java | grep installed

常用 SDKMAN 命令

命令描述
sdk list java查看所有可用的 Java 版本
sdk install java <version>安装指定版本的 Java
sdk use java <version>临时切换到指定版本
sdk default java <version>设置默认 Java 版本
sdk current java查看当前使用的 Java 版本
sdk uninstall java <version>卸载指定版本的 Java

✅ 验证安装

安装完成后,您可以运行以下命令验证 SDKMAN 是否正常工作:

sdk version

验证 Java 版本是否正确:

java -version

预期输出应该类似:

openjdk version "1.8.0_452"
OpenJDK Runtime Environment (build 1.8.0_452-b08)
OpenJDK 64-Bit Server VM (build 25.452-b08, mixed mode)

🔄 项目自动切换 Java 版本

本项目包含一个 .sdkmanrc 文件,它会在您进入项目目录时自动切换到正确的 Java 版本。要启用此功能,请运行:

sdk env

项目配置文件示例

在项目根目录创建 .sdkmanrc 文件:

# This file is used by SDKMAN to automatically switch to the correct Java version
# when entering this project directory
#
# 注意:
# 1. 此文件需要 SDKMAN 支持才能生效
# 2. 如果您没有安装 SDKMAN,请参考本文档进行安装
# 3. Windows 用户需要在 Git Bash 或类似的 Unix-like 环境中使用 SDKMAN
# 4. 如果您使用的是 IDE(如 IntelliJ IDEA),请确保在项目设置中也配置了正确的 JDK

java=8.0.452-amzn

🔧 故障排除

Git Hooks 中的 Java 版本问题

如果您在运行 Git 命令时遇到 Java 版本相关的问题,请确保:

  1. ✅ SDKMAN 已正确安装
  2. ✅ 项目所需的 Java 版本已安装
  3. ✅ 在您的 shell 配置文件(如 .bashrc.zshrc 或 Git Bash 的 .bash_profile)中已加载 SDKMAN
💡

如果您没有安装 SDKMAN,Git hooks 将使用系统默认的 Java 版本。请确保您的系统 Java 版本与项目兼容。

Windows 特定问题

在 Windows 上,如果您在 CMD 或 PowerShell 中使用 Git,可能需要手动设置 JAVA_HOME 环境变量指向正确的 Java 版本。

设置 JAVA_HOME 环境变量

# PowerShell 示例
$env:JAVA_HOME = "C:\Users\YourUsername\.sdkman\candidates\java\8.0.452-amzn"

永久设置环境变量

# 设置系统环境变量(需要管理员权限)
[Environment]::SetEnvironmentVariable("JAVA_HOME", "C:\Users\YourUsername\.sdkman\candidates\java\8.0.452-amzn", "User")

常见问题解决

SDKMAN 命令未找到

sdk: command not found

错误代码: 127

PATH: /usr/bin:/bin:/usr/sbin:/sbin

  • SDKMAN 未正确安装
  • shell 配置文件未重新加载
  • 需要重启终端或重新加载配置

解决方案: 确保已重新加载 shell 配置或重启终端

Java 版本未自动切换

Java version not switched automatically

错误代码: 0

PATH: Project directory

  • .sdkmanrc 文件不存在或格式错误
  • SDKMAN 未正确加载
  • 需要运行 sdk env 命令

解决方案: 运行 sdk env 命令,或检查 .sdkmanrc 文件是否存在

Windows Git hooks 失败

Git hooks failed on Windows

错误代码: 1

PATH: CMD/PowerShell environment

  • 在 CMD 或 PowerShell 中运行 Git
  • 环境变量配置不正确
  • 建议使用 Git Bash

解决方案: 使用 Git Bash 而不是 CMD 或 PowerShell

📚 相关资源

官方文档

相关博客文章

工具推荐


🎉

恭喜!现在您已经成功安装和配置了 SDKMAN。这将帮助您更好地管理 Java 版本,确保项目的一致性。

如果您在安装过程中遇到任何问题,欢迎参考我们的其他相关文章或查看官方文档。