Windows 安装 SDKMAN 详细教程(JDK 多版本管理)

SDKMAN(Software Development Kit Manager)是一个用于管理和切换不同版本软件开发工具包(如 Java、Groovy、Scala 等)的命令行工具。在类 Unix 系统(Linux/macOS)中使用非常广泛,但在 Windows 上需要借助类似 Git Bash 的 Bash 模拟环境来运行。

说明: SDKMAN 天生在 Linux 和 Mac 上配置简单,对于 Windows 需要几经周折才可以正常使用。它默认并不能直接在 Windows 原生 CMD 或 PowerShell 中运行,需要使用模拟的 Bash 环境(如 Git Bash),这也是特意编写本文的原因。本文将详细介绍如何在 Windows 上借助 Git Bash 安装并使用 SDKMAN 管理 JDK。

一、准备工作:配置 Git Bash 支持 zip 命令

SDKMAN 在安装时依赖 zip 命令,而 Git for Windows 默认只自带 unzip 命令,不包含 zip 命令,因此我们需要为 Git Bash 手动添加 zip 功能。

1. GnuWin Files 下载地址

我们可以从 GnuWin Files 站点下载适用于 Windows 的 GNU 工具,该站点提供了许多常用 GNU 工具的 Windows 兼容版本。

  • 站点地址: https://sourceforge.net/projects/gnuwin32/files/

在该站点中,可下载 zip 的二进制压缩包。

2. 使用便捷下载链接

为方便读者,我提供了以下 zip 工具的打包文件供下载:

3. 配置 Git Bash 支持 zip 命令

下载完成后,请按以下步骤操作:

  1. 解压缩上述两个 zip 文件。
  2. zip.exebzip2.dll 文件拷贝至 Git 安装目录下的 \usr\bin 文件夹中。
  3. 一般来说,Git 安装目录为:C:\Program Files\Git\usr\bin

⚠️ 注意:确保文件被写入 usr\bin 目录,这样才能在 Git Bash 中识别 zip 命令。

4. 验证配置是否成功

打开 Git Bash 窗口,运行以下命令检查是否可以正常识别:

zip --version 

如果命令能正常输出版本信息,则表示配置成功,我们可以继续进行 SDKMAN 的安装。

二、安装 SDKMAN

接下来,我们正式开始 SDKMAN 的安装流程。

1. 设置 SDKMAN 目录环境变量并使其生效

首先需要指定 SDKMAN 的安装目录(注意:此时不要手动创建该目录,SDKMAN 会自动创建):

exportSDKMAN_DIR="/d/JavaDev/sdkman"

你也可以将该命令加入 .bashrc.bash_profile 文件中,以实现永久配置(建议)。

echo'export SDKMAN_DIR="/d/JavaDev/sdkman"'>> ~/.bashrc 

添加环境变量到配置文件后,需要重新加载配置文件使其生效:

source ~/.bashrc 

然后验证环境变量是否设置成功:

echo$SDKMAN_DIR

如果输出 /d/JavaDev/sdkman,则表示环境变量配置成功。

2. 安装 SDKMAN

执行以下命令自动下载并安装 SDKMAN:

curl -s "https://get.sdkman.io"|bash

安装完成后,会提示你执行一行命令来初始化 SDKMAN,示例如下:

source"$SDKMAN_DIR/bin/sdkman-init.sh"

执行它后即可激活 SDKMAN。

3. 验证安装是否成功

执行以下命令检查 SDKMAN 是否安装成功:

sdk version 

如果输出 SDKMAN 的版本号,则安装成功。

三、使用 SDKMAN 管理 JDK

SDKMAN 最核心的功能之一是管理 JDK 的安装与切换。

1. 查看 JDK 版本列表

sdk list java 

该命令会显示所有可用的 JDK 版本,包括:

  • Use 列显示 >>> 表示当前正在使用的版本
  • Status 列显示 installed 表示已安装的版本
  • 无任何标识的表示可安装但尚未安装的版本

2. 安装指定版本 JDK

例如安装 OpenJDK 17:

sdk install java 17.0.8-tem 

3. 查看当前已安装的 JDK

再次运行 sdk list java 命令,已安装的版本会显示 > 标识。

4. 查看 JDK 安装路径

使用以下命令查看指定 JDK 版本的安装路径:

sdk home java 17.0.8-tem 

该命令会输出对应 JDK 版本的实际安装目录路径。

5. 切换默认 JDK 版本

请使用管理员运行 Git Bash,否则不能正常创建 symlink

非管理员用户使用命令切换 sdk 版本时会出现提示 “cannot create current symlink, fall back to copy!”。
从提示可以看出,创建软连接失败,改为使用拷贝sdk的方式,这虽然不影响最终使用,但是我们还是推荐使用管理员以方式操作(正确的 symlink 可以使用 sdk current java 查看当前版,非管理员方式的 copy 结果查看不了当前版本)。

使用该命令切换默认 JDK(重启会话后仍然有效):

sdk default java 17.0.8-tem 
小技巧:命令行输入 sdk default java 后按两次 tab 键会列出所有已经安装的版本,方便拷贝切换。

6. 临时切换 JDK 版本

以下命令是临时切换,只在当前会话生效:

sdk use java 11.0.20-tem 

7. 卸载 JDK

sdk uninstall java 11.0.20-tem 

四、配置系统环境变量

通过 SDKMAN 安装的 JDK 只能在 Git Bash 环境中使用。如果需要在 Windows 原生 CMD 或 PowerShell 中使用 java 命令,需要配置系统环境变量。

1. 问题现象

在 Windows CMD 命令行中执行以下命令会提示"不是内部或外部命令":

java -version 

2. 解决方案:配置 JAVA_HOME 和 Path 环境变量

为了保持 SDKMAN 的版本切换功能,我们应该将系统环境变量指向 SDKMAN 的当前默认版本目录:

  1. 右键"此电脑" → “属性” → “高级系统设置”
  2. 点击"环境变量"
  3. 在"系统变量"中点击"新建",添加 JAVA_HOME 环境变量:
    • 变量名:JAVA_HOME
    • 变量值:D:\JavaDev\sdkman\candidates\java\current
  4. 在"系统变量"中找到"Path"变量,选中后点击"编辑"
  5. 点击"新建",添加:%JAVA_HOME%\bin
  6. 点击"确定"保存所有更改

⚠️ 关键点:

  • current 目录指向当前通过 sdk default 命令设置的默认版本
  • 当通过 SDKMAN 切换默认版本时,current 目录会自动指向新的默认版本
  • 这样配置可以保持 SDKMAN 的版本切换功能在 Windows 系统环境中同样生效

3. 验证配置结果

重新打开 CMD 窗口,执行:

java -version 

如果能正常显示 Java 版本信息,则配置成功。

4. 验证版本切换功能

在 Git Bash 中切换 JDK 版本后,在 CMD 中验证是否同步:

# 在 Git Bash 中切换默认版本 sdk default java 11.0.20-tem # 在 CMD 中验证(需要重新打开 CMD 窗口) java -version 

⚠️ 注意:由于 Windows 系统环境变量的缓存机制,可能需要重新打开 CMD 窗口才能看到版本切换的效果。

五、结语

通过以上步骤,你已成功在 Windows 系统中借助 Git Bash 安装并配置了 SDKMAN,并掌握其管理 JDK 的基本命令。未来你可以用它来轻松管理多版本的 Java、Groovy、Scala 等多种开发工具,提升开发效率。

希望本教程对你有帮助。如需进一步学习 SDKMAN 的高级使用方法,欢迎参考其官方文档


(END)

Read more

Java 大视界 -- Java+Flink CDC 构建实时数据同步系统:从 MySQL 到 Hive 全增量同步(443)

Java 大视界 -- Java+Flink CDC 构建实时数据同步系统:从 MySQL 到 Hive 全增量同步(443)

Java 大视界 -- Java+Flink CDC 构建实时数据同步系统:从 MySQL 到 Hive 全增量同步(443) * 引言: * 正文: * 一、 核心认知:Flink CDC 与全增量同步逻辑 * 1.1 Flink CDC 核心原理 * 1.1.1 与传统数据同步方案的对比(实战选型参考) * 1.2 全增量同步核心逻辑(MySQL→Hive) * 1.2.1 关键技术点(实战必关注,每个点都踩过坑) * 二、 环境准备:生产级环境配置(可直接复用) * 2.1 核心依赖配置(pom.xml)

By Ne0inhk
Redis Java 集成到 Spring Boot

Redis Java 集成到 Spring Boot

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:Redis 📚本系列文章为个人学习笔记,在这里撰写成文一为巩固知识,二为展示我的学习过程及理解。文笔、排版拙劣,望见谅。 Redis Java 集成到 Spring Boot * 一、使用 Spring Boot 连接 Redis 单机 * 1.创建Spring Boot 项目 * 2.勾选相关依赖(Dependencies) * 3.界面显示 * 二、配置 Redis 服务地址 * 1.在 application.yml 中配置 * 2.映射端口号 * 三、创建 Controller

By Ne0inhk
(最新原创毕设)Java上门帮厨管理系统/03.01白嫖源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案

(最新原创毕设)Java上门帮厨管理系统/03.01白嫖源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案

摘  要 随着现代生活节奏的加快和人们对便捷、高质量餐饮服务需求的增加,上门帮厨作为一种新兴的服务模式逐渐受到欢迎。然而,传统的上门帮厨管理方式依赖于电话预约和手工记录,不仅效率低下,而且难以满足用户对服务质量透明度和个性化的需求。为此,本文提出了一个基于Spring Boot框架的临沂上门帮厨管理系统。该系统旨在通过信息化手段优化厨师与用户之间的互动流程,提高服务效率,增强用户体验,并为管理者提供有效的运营支持。 基于Spring Boot的临沂上门帮厨管理系统集成了多种功能模块,以满足不同用户群体的需求。普通用户可以通过注册登录进入系统,浏览首页展示的轮播图、菜品资讯、菜品信息推荐等信息,并进行相关操作。系统提供了菜品资讯的查看、点赞、收藏和评论功能,以及菜品信息的详情查看、评分、预约等功能。用户还可以在线提交问题反馈,查看个人账户信息并进行修改。 厨师用户可以查看订单详情,进行订单审核和回复,提交佣金提现申请,并查看提现记录。这些功能模块的设计充分考虑了厨师的实际需求,旨在帮助他们更好地管理和提升自己的服务水平。 管理员负责整个系统的运维工作,包括新注册用户的审核、菜品信

By Ne0inhk

【AI测试全栈:质量】39、Training-Serving Skew终结者:Python+Java+Vue三端联动的特征工程全链路测试实战指南

Training-Serving Skew终结者:Python+Java+Vue三端联动的特征工程全链路测试实战指南(附完整代码) 摘要 在AI生产环境中,90%的模型效果衰减并非源于算法本身,而是特征工程环节的Training-Serving Skew(训练-服务偏差)所致。 本文深度解析特征工程的三大核心测试目标(一致性、稳定性、有效性),通过Python(数据处理)、Java(分布式计算)、Vue(可视化监控)三端协同,构建企业级特征工程测试体系。涵盖电商推荐与金融风控双场景实战,提供可直接落地的完整代码实现与踩坑优化方案。 一、Training-Serving Skew:模型失效的隐形杀手 1.1 问题定义与影响 Training-Serving Skew指训练阶段与服务阶段特征数据在计算逻辑、数据格式、时间窗口、数据延迟等环节产生的系统性差异。这种偏差如同"数据寄生虫",悄然吞噬模型效果: * 案例:某视频推荐模型离线NDCG@10达0.137,上线后3周内用户

By Ne0inhk