使用 SDKMAN 安装 JDK

使用 SDKMAN 安装 JDK

SDKMAN 是一个用于管理多版本软件开发工具包(SDK)的命令行工具,支持安装和管理多种语言的 SDK,包括 Java、Kotlin、Groovy 等。以下是使用 SDKMAN 安装 JDK 的详细步骤:

1. 安装 SDKMAN

打开终端,执行以下命令来安装 SDKMAN:

bash

arduino 复制代码
curl -s "https://get.sdkman.io" | bash

上述命令会从官方网站下载安装脚本并执行。安装完成后,按照提示激活 SDKMAN,执行以下命令:

bash

bash 复制代码
source "$HOME/.sdkman/bin/sdkman-init.sh"

你可以通过下面的命令来验证 SDKMAN 是否安装成功:

bash

复制代码
sdk version

如果安装成功,会显示 SDKMAN 的版本信息。

2. 列出可用的 JDK 版本

使用以下命令列出 SDKMAN 支持的所有 JDK 版本:

bash

复制代码
sdk list java

执行该命令后,会显示一个包含各种 JDK 发行版(如 Adoptium、Azul Zulu、Oracle 等)及其不同版本号的列表。列表中会有不同的标识符,如 17.0.7-tem 表示 Adoptium(原 Temurin) 发行版的 Java 17.0.7 版本。

3. 安装指定的 JDK 版本

根据上一步列出的 JDK 版本信息,选择你想要安装的版本,然后使用以下命令进行安装。例如,要安装 Adoptium 的 Java 17 版本,可以执行:

bash

复制代码
sdk install java 17.0.7-tem

安装过程中,SDKMAN 会自动下载并配置所选的 JDK 版本。

4. 验证 JDK 安装

安装完成后,你可以通过以下命令验证 JDK 是否安装成功:

bash

复制代码
java -version

如果安装成功,会显示你刚刚安装的 JDK 版本信息。

5. 切换 JDK 版本(可选)

如果你已经安装了多个 JDK 版本,可以使用以下命令在不同版本之间进行切换:

bash

perl 复制代码
sdk use java <版本标识符>

例如,要切换到之前安装的 17.0.7-tem 版本,可以执行:

bash

perl 复制代码
sdk use java 17.0.7-tem

你还可以使用 sdk default java <版本标识符> 命令将某个 JDK 版本设置为默认版本,这样每次打开新的终端会话时都会使用该版本。

查看 JDK 安装路径

方法一:使用 sdk current 命令

在终端中输入以下命令:

bash

sql 复制代码
sdk current java

执行该命令后,输出结果会显示当前正在使用的 JDK 版本以及其安装路径。示例输出如下:

plaintext

kotlin 复制代码
Using java version 17.0.7-tem in this shell.
/Users/yourusername/.sdkman/candidates/java/17.0.7-tem

其中 /Users/yourusername/.sdkman/candidates/java/17.0.7-tem 就是当前 JDK 的安装路径。

方法二:借助 which 命令查看 java 可执行文件路径

在终端运行以下命令:

bash

bash 复制代码
which java

此命令会显示 java 可执行文件的路径,通过该路径可以找到 JDK 的安装目录。例如,输出可能是 /Users/yourusername/.sdkman/candidates/java/17.0.7-tem/bin/java,那么去掉 /bin/java 部分,即 /Users/yourusername/.sdkman/candidates/java/17.0.7-tem 就是 JDK 的安装路径。

方法三:通过 JAVA_HOME 环境变量查看

如果已经正确配置了 JAVA_HOME 环境变量,可使用如下命令查看其值:

bash

bash 复制代码
echo $JAVA_HOME

输出的内容即为 JDK 的安装路径。一般来说,使用 SDKMAN 安装 JDK 后,在配置 JAVA_HOME 时会将其设置为对应 JDK 版本的根目录,如 /Users/yourusername/.sdkman/candidates/java/17.0.7-tem

相关推荐
weixin_4462608510 小时前
HACO:面向动态部署环境的对冲式智能计算可靠多智能体调度框架
后端·python·flask
ttwuai12 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
用户83562907805112 小时前
Python 实现 Excel 页面布局与打印设置自动化
后端·python
用户99314415798412 小时前
微服务框架中获取用户信息
后端
xuanWb12 小时前
手写一个 LLM API 网关:Anthropic 与 OpenAI 协议转换的完整实现
后端
苍何12 小时前
给 Codex 换皮肤这门生意,被我开源了
后端
用户83562907805112 小时前
Python 实现 Excel 命名范围(Named Range)的创建与管理
后端·python
程序员David12 小时前
我让 Claude 从架构文档一路干到代码,踩了三个坑才摸清边界
后端
Zane199412 小时前
并发 vs 并行:别再傻傻分不清了,一文讲透 Java 并发编程的第一课
java·后端