使用 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

相关推荐
章豪Mrrey nical15 小时前
前后端分离工作详解Detailed Explanation of Frontend-Backend Separation Work
后端·前端框架·状态模式
派大鑫wink16 小时前
【JAVA学习日志】SpringBoot 参数配置:从基础到实战,解锁灵活配置新姿势
java·spring boot·后端
程序员爱钓鱼16 小时前
Node.js 编程实战:文件读写操作
前端·后端·node.js
xUxIAOrUIII16 小时前
【Spring Boot】控制器Controller方法
java·spring boot·后端
Dolphin_Home16 小时前
从理论到实战:图结构在仓库关联业务中的落地(小白→中级,附完整代码)
java·spring boot·后端·spring cloud·database·广度优先·图搜索算法
zfj32116 小时前
go为什么设计成源码依赖,而不是二进制依赖
开发语言·后端·golang
weixin_4624462317 小时前
使用 Go 实现 SSE 流式推送 + 打字机效果(模拟 Coze Chat)
开发语言·后端·golang
JIngJaneIL17 小时前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
小信啊啊17 小时前
Go语言切片slice
开发语言·后端·golang
Victor35619 小时前
Netty(20)如何实现基于Netty的WebSocket服务器?
后端