SDK 多版本管理控制利器 SDKMAN 介绍及使用

一、SDKMAN

假如你同时参与了一个使用JDK 8的项目和一个采用JDK 17特性的项目。每次在两个项目之间切换时,你都面临着版本冲突的问题。如果有那么一个工具类似于 Python 中的 anaconda 工具,可以帮助你管理不同版本的 SDK ,是不是非常有用,那 SDKMAN 就可以帮你实现。

SDKMAN 是一款面向Java开发者的命令行工具,旨在简化Unix系统上SDKs的管理。它支持跨平台使用,提供便捷的版本控制和切换功能,通过维护候选SDK列表,让用户能够轻松安装、更新和卸载各类软件开发工具包。SDK 支持如 Java,Groovy,Scala,Kotlin、Ceylon,也支持Maven,Gradle,SBT,Spring Boot,Vert.x 等。

二、Windows 安装

目前 Windows 有两种安装方式,WSLGit Bash 的方式,Git 大家电脑中应该都有安装,因此下面基于 Git Bash 进行安装 SDKMAN

首先安装 SDKMAN 会使用到 unzip、zip、curl、sed 命令,默认 Git 包含了 unzip、curl、sed 但缺少 zip

在这里插入图片描述

因此这里需要为 Git 集成 zip 命令,首先下载 zip 包:

https://sourceforge.net/projects/gnuwin32/files/zip/3.0/

在这里插入图片描述

下载后,将解压后 bin 目录下的 zip.exe 拷贝到 Git 安装目录下 mingw64/bin 目录下:

在这里插入图片描述

同时 zip 还依赖 bzip2 ,因此还要下载 bzip2 包:

https://sourceforge.net/projects/gnuwin32/files/bzip2/1.0.5/

在这里插入图片描述

下载后,将解压后 bin 目录下的 bzip2.dll 拷贝到 Git 安装目录下 mingw64/bin 目录下:

在这里插入图片描述

然后再次尝试 zip 命令,可以看到已经可以了:

在这里插入图片描述

下面开始下载安装 SDKMAN ,在 Git Bash 中执行如下操作:

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

在这里插入图片描述
安装完成后,将 SDKMAN 添加到环境变量中:

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

在这里插入图片描述

验证环境:

sdk version

在这里插入图片描述

三、SDKMAN 使用

3.1 查看所有可用的SDK

sdk list

在这里插入图片描述
可以看到可以安装非常多的应用,而不限于 JDK

3.2 查看所有指定类型可用的SDK

sdk list java

在这里插入图片描述

3.3 安装指定类型版本的SDK

sdk install java 21.0.2-open

在这里插入图片描述

3.4 切换并使用指定类型版本的SDK

sdk use java 21.0.2-open

在这里插入图片描述

验证 java 版本:

java --version

在这里插入图片描述

3.5 设置默认版本

sdk default java 21.0.2-open

在这里插入图片描述

3.6 查看当前使用的 SDK

sdk current

在这里插入图片描述

3.7 查看当前使用的指定类型的 SDK

sdk current java

在这里插入图片描述

3.8 查看 SDK 安装目录

sdk home java 21.0.2-open

在这里插入图片描述

3.8 卸载指定类型版本的SDK

sdk uninstall java 21.0.2-open

3.9 升级 SDKMAN

sdk selfupdate

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/388203.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

八股文无用?也许是计算机大学生的重要人生指南!

大家所说的"八股文"其实指的是那些固定、标准化的面试问题和答案,通常涉及特定的知识点和技术概念。 博主本人也是一枚大学生,个人也记背过相关的八股文,比如计算机网络里的TCP和UDP的区别、TCP三次握手和四次挥手的具体过程等等&a…

汽车电子KL15,KLR,KL30等术语解释

KL作为术语,是德语’klemme’的缩写,代表连接器或连接 缩略词解释KL15汽车电源的RUN模式KL50汽车电源的Crank模式KLR汽车电源的ACC模式KL30汽车蓄电池的正极,始终保持带电状态KL31汽车蓄电池的负极,持续与车辆接地连接KL4048V汽车…

遇到Websocket就不会测了?别慌,学会这个Jmeter插件轻松解决....

websocket 是一种双向通信协议,在建立连接后,websocket服务端和客户端都能主动向对方发送或者接收数据,而在http协议中,一个request只能有一个response,而且这个response也是被动的,不能主动发起。 websoc…

OpenCV C++的网络实时视频流传输——基于Yolov5 face与TCP实现实时推流的深度学习图像处理客户端与服务器端

前言 在Windows下使用TCP协议,基于OpenCV C与Yolov5实现了一个完整的实时推流的深度学习图像处理客户端与服务器端,为了达到实时传输的效果,客户端使用了多线程的方式实现。深度学习模型是基于onnxruntime的GPU推理。,实现效果如…

微服务架构三大利器:限流、降级与熔断

文章目录 前言一、限流(Rate Limiting)二、降级(Degradation)三、熔断(Circuit Breaker)四、三者关系总结 前言 限流、降级和熔断是分布式系统中常用的容错策略,它们各自承担着不同的角色&#…

干货 | 2024中国联通算力网络安全白皮书(免费下载)

本白皮书以国家整体安全观为指导,充分发挥网络安全现代产业链链长的主体支撑和融通带动作用,提出算力网络“新质安全、共链可信”的安全愿景和“构建开放融合内生免疫弹性健壮网安智治的一体化安全”的安全目标。从运营商开展网络建设和应用部署的角度出…

WebWorker处理百万数据

Home.vue <template><el-input v-model"Val" style"width: 400px"></el-input><el-button click"imgHandler">过滤</el-button><hr /><canvas id"myCanvas" width"500" height&quo…

Linux系统之DHCP服务配置

1、准备阶段 Windows&#xff08;客户端&#xff09;开启Vmnet8网卡Linux6&#xff08;服务端&#xff09;网络连接选择NAT模式&#xff0c;并配置IP地址为192.168.11.1/24Linux5&#xff08;客户端&#xff09;网络连接选择NAT模式将NAT的DHCP功能取消 2、DHCP服务器相关软件…

宝塔部署springboot vue ruoyi前后端分离项目,分离lib、resources

1、“文件”中创建好相关项目目录,并将项目相关文件传到对应目录 例如&#xff1a;项目名称/ #项目总目录 api/ #存放jar项目的Java项目文件 manage/ #vue管理后端界面 …

Vue3_对接声网实时音视频_多人视频会议

目录 一、声网 1.注册账号 2.新建项目 二、实时音视频集成 1.声网CDN集成 2.iframe嵌入html 3.自定义UI集成 4.提高进入房间速度 web项目需要实现一个多人会议&#xff0c;对接的声网的灵动课堂。在这里说一下对接流程。 一、声网 声网成立于2014年&#xff0c;是全球…

ARCGIS PRO DSK GraphicsLayer创建文本要素

一、判断GraphicsLayer层【地块注记】是否存在&#xff0c;如果不存在则新建、如果存在则删除所有要素 Dim GraphicsLayer pmap.GetLayersAsFlattenedList().OfType(Of ArcGIS.Desktop.Mapping.GraphicsLayer).FirstOrDefault() 获取当前map对象中的GetLayer图层 Await Queue…

DataKit之OpenGauss数据迁移工具

# 在讲openGauss和datakit之前&#xff0c;我先说下pgloader这个工具也支持将数据从mysql同步到openGauss或者postgresql&#xff0c;但是 注意了&#xff0c;官网明确说明了不支持视图和触发器的迁移&#xff0c;如果你只是迁移表结构和数据&#xff0c;那么这个既简单又快下面…

使用Go的tls库搭建HTTPS服务

文章目录 tls.go 中文文档使用OpenSSL生成证书Win系统安装openssl生成证书 HTTP情况下的通信编写服务器代码编写客户端代码 tls.go 中文文档 https://studygolang.com/pkgdoc 使用OpenSSL生成证书 Win系统安装openssl 安装地址 https://slproweb.com/products/Win32OpenSSL.…

设计模式17-适配模式

设计模式17-适配模式 动机定义与结构C代码推导总结应用具体应用示例 动机 在软件系统中由于应用环境的变化常常需要将一些现存的对象。放到新的环境中去应用。但是新环境要求的接口是这些现存对象所不满足的。那么这种情况下如何应对这种迁移的变化&#xff1f;如何既能利用现…

计算机毕业设计选题推荐-戏曲文化体验系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

Python自动发送邮件如何设置邮件内容格式?

Python自动发送邮件时&#xff0c;如何自动化发送HTML格式邮件&#xff1f; Python是一种功能强大且灵活的编程语言&#xff0c;广泛用于各种自动化任务&#xff0c;其中包括自动发送邮件。AokSend将介绍在使用Python自动发送邮件时&#xff0c;如何设置邮件内容的格式&#x…

【系统架构设计师】二十二、嵌入式系统架构设计理论与实践②

目录 五、嵌入式中间件 5.1 嵌入式中间件定义 5.2 嵌入式中间件的分类 六、嵌入式系统软件架构设计方法 6.1 基于架构的软件设计开发方法的应用 6.2 属性驱动的软件设计方法 6.2.1 ADD 开发方法的质量属性与场景 6.2.2 ADD 开发过程 6.3 实时系统设计方法 6.3.1 DART…

索引:SpringCloudAlibaba分布式组件全部框架笔记

索引&#xff1a;SpringCloudAlibaba分布式组件全部框架笔记 一推荐一套分布式微服务的版本管理父工程pom模板&#xff1a;Springcloud、SpringCloudAlibaba、Springboot二SpringBoot、SpringCloud、SpringCloudAlibaba等各种组件的版本匹配图&#xff1a;三Spring Cloud Aliba…

【MySQL篇】Percona XtraBackup标准化全库完整备份策略(第三篇,总共五篇)

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux&#xff0c;也在扩展大数据方向的知识面✌️…

C++初学(8)

8.1、string类简介 现在可以用string类型的变量而不是字符数组来存储字符串&#xff0c;string类也用的会比数组简单&#xff0c;同时提供了将字符串作为一种数据类型的表示方式。 要使用string类&#xff0c;必须在程序中包含头文件string。string类位于名称空间std中&#…