Windows下使用SDKMAN对JDK(Java)进行多版本管理

news2025/1/15 13:43:36

Windows下使用SDKMAN对JDK(Java)进行多版本管理

  • 1.背景
  • 2.基于msys2工具
    • 2.1. msys2简介
    • 2.2. 安装与配置
    • 2.2. Windows环境变量配置参考
    • 2.3 结果确认
  • 3. 基于WSL

1.背景

前端有nvm,python有miniconda,miniforge等,java呢?java在Linux,Macos下有SDKMAN以及其他的版本管理工作,SDKMAN好用,但不直接支持Windows,本文通过深度,摸索出一个可以在Windows下使用的SDKMAN方式。

2.基于msys2工具

推荐此方式

2.1. msys2简介

MSYS2(Minimal SYStem 2)是一个集成了大量的GNU工具链、工具和库的开源软件包集合。它提供了一个类似于Linux的shell环境,可以在Windows系统中编译和运行许多Linux应用程序和工具。
MSYS2基于MinGW-w64平台,提供了一个完整的开发环境,包括GCC编译器、GDB调试器、Make、Git版本控制系统和许多其他开发工具。除了常用的开发库和工具之外,MSYS2还提供了许多专门针对Windows平台的库和工具,方便开发人员进行跨平台开发和移植工作。
由于MSYS2拥有比较完整的Linux工具链和库,因此它成为了许多跨平台开发和移植项目的首选工具。另外,使用MSYS2也可以轻松地在Windows系统中搭建一个类似于Linux的软件开发环境,方便开发人员进行开发和调试工作。

2.2. 安装与配置

进入MSYS2(https://www.msys2.org/)下载
在这里插入图片描述
安装msys2后,对应的用户目录"msys2安装目录\home\windows用户名"
在这里插入图片描述
运行msys2 ucrt64 终端,然后在其操作

pacman -S zip unzip #安装zip,unzip
curl -s "https://get.sdkman.io" | bash #安装sdkman
source "$HOME/.sdkman/bin/sdkman-init.sh" #环境变量即时生效
sdk version #版本查看
sdk install java 17.0.10-oracle #安装jdk

在这里插入图片描述
位置:C:\msys64\home\long.sdkman\candidates\java\current
在这里插入图片描述

2.2. Windows环境变量配置参考

进入界面进行环境变量设置
在这里插入图片描述
参考变量与值设定

JAVA_HOME: C:\msys64\home\long\.sdkman\candidates\java\current
Path:  %JAVA_HOME%\bin
CLASSPATH:.,%JAVA_HOME%\lib\tool.jar;%JAVA_HOME%\lib\dt.jar

2.3 结果确认

因为windows配置的current,因此需要切换版本时,直接在msys2命令台切换即可。
在这里插入图片描述

3. 基于WSL

**注意:**此方式仅限WSL内使用,使用方式同Linux
友情提醒:安装sdkman,并指定sdkman安装位置到C盘根目录sdkman中,取代默认wsl主机中的~/.sdkman ,这样windows也可以正常访问(java这事访问也没有意义,因为下载下来的是Linux的命令,无法执行)。因为默认情况下,wsl主机中可以直接访问的所有,而windows访问wsl则需要通过\这种非文件协议,导致不方便

sudo apt install zip unzip
curl -s "https://get.sdkman.io" | bash #安装sdkman
#export SDKMAN_DIR="/mnt/c/sdkman" && curl -s "https://get.sdkman.io" | bash #安装sdkman,并指定sdkman安装位置到C盘根目录sdkman中,取代默认wsl主机中的~/.sdkman ,这样windows也可以正常访问(java这事访问也没有意义,因为下载下来的是Linux的命令,无法执行)。因为默认情况下,wsl主机中可以直接访问的所有,而windows访问wsl则需要通过\\这种非文件协议,导致不方便
source "$HOME/.sdkman/bin/sdkman-init.sh" #环境变量即时生效
sdk version #版本查看
sdk install java 17.0.10-oracle #安装jdk

安装后确认其位置

whereis java

显示在用户主目录的.sdkman/candidates/java/17.0.10-oracle/bin/java
在这里插入图片描述
直接在地址栏访问,这里为Linux根目录,进入java目录,也是Linux版本的java,这个和msys2不同,在msys2进去java的目录是windows版本的java

\\wsl.localhost\Ubuntu

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PCB走线宽度、PCB走线宽度计算、PCB走线宽度和电流

目录 一、什么是PCB走线宽度? 二、什么是走线? 三、哪些因素对走线宽度至关重要? 1、信号走线 2、电源走线 3、直线宽度和信号反射 四、怎么计算PCB走线宽度? 1、使用PCB走线宽度计算器 2、使用方程式 五、怎么计算PCB 走…

【学习笔记二十四】EWM补货策略和自动补货配置

一、EWM补货策略概述 1.计划补货 ①以联机或批处理模式启动 ②根据最大和最小数量计算补货 ③仅当库存量低于最低数量时才开始 ④四舍五入至最小补货数量的倍数 2.自动补货 ①在WT确认期间启动 ②根据最大和最小数量计算补货 ③只有当库存量低于最低数量时才开始 ④四舍…

开源博客项目Blog .NET Core源码学习(17:App.Hosting项目结构分析-5)

本文学习并分析App.Hosting项目中前台页面的作品展示页面和首页页面。 作品展示页面 作品展示页面总体上为上下布局,上方显示导航菜单,下方从左向右显示图片数据,支持放大查看图片和下载图片。整个页面使用了layui中的面包屑导航、弹出层、流…

6.3 实现Session 共享

1. Session 共享配置 2. Nginx 负载均衡 3. 测试请求分发 经过如上步骤 ,就完成了利用 Redis 实现 Session 共享的功能. 基本上不需要额外配置,开箱即用

基于 Grassmannian Manifold的动态图嵌入学习的脑网络时空枢纽识别

Spatiotemporal Hub Identification in Brain Network by Learning Dynamic Graph Embedding on Grassmannian Manifold 摘要 神经成像技术的进步使得测量不同大脑区域之间的连接随时间演变成为可能。新出现的证据表明,一些关键的大脑区域,称为枢纽节点…

Docusaurus 3.2 发布,更快的 MDX 开发体验

Docusaurus 是一个静态站点生成器。它构建了一个具有快速客户端导航的单页面应用程序,利用 React 的全部功能使你的网站具有交互性。它提供开箱即用的文档功能,但可用于创建任何类型的网站(个人网站、产品、博客、营销登陆页面等)…

产品规划|如何从0到1规划设计一款产品?

我们要如何从0到1规划设计一款产品?在前期工作我们需要做什么呢?下面这篇文章就是关于此的相关内容,大家一起往下看多多了解了解吧! 一、什么是产品规划? 产品规划是一种策略,它设定了产品的价值和目标,并确定实施方案以实现这些目标。它考虑了产品的整个生命周期,基于…

我有一种不完美的完美主义,必须要有缺点,没有缺点就是不完美的

《程客有话说》是我们最新推出的一个访谈栏目,邀请了一些国内外有趣的程序员来分享他们的经验、观点与成长故事,我们尝试建立一个程序员交流与学习的平台,也欢迎大家推荐朋友或自己来参加我们的节目,一起加油。 本期我们邀请的程…

Textual Inversion:使用文本反转个性化文本到图像的生成

系列文章目录 DreamBooth:个性化的文本到图像扩散模型 文章目录 系列文章目录一、研究动机二、模型方法1、潜在扩散模型2、文本嵌入3、文本反演 三、Textual Inversion与dreambooth的对比四、Textual Inversion效果1、图像变化2、文本引导合成3、风格迁移 Textual …

全网最全的平行坐标图(parallel coordinates plot)的绘制攻略

早上起来拥抱太阳,写小论文,看到人家的图怎么那么好看!!?? 这不得赶紧抄下来,我也发一个顶刊?于是开始思考如何解决绘制这个问题,目前现有的大部分解决方案都是直接调库…

Unity3d的海盗王地图

一直以来,都想将海盗王的地图搬到手游unity3d上面。 经过漫长时间的研究,终于实现了当初的想法。

Webfunny埋点系统如何统计留存率

Hello,大家好,有小伙伴想要咨询webfunny埋点系统次日留存率该如何统计,今天我们就来讲一讲吧。 首先,我们以次日留存率来作为示例讲解说明,3日,7日留存率也是同理的。 示例场景:用户第一天前来…

基于SpringBoot的“幼儿园管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“幼儿园管理系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 个人信息界面图 缴费信息管理界…

Bentley二次开发教程02-开发环境搭建

1 Bentley 平台介绍 图 1 Bentley 平台介绍 Bentley 软件大致可分为四大平台,分别为用于设计的 Microstation 平台,用于协同的 ProjectWise 平台,用于对资产进行全生命周期管理的 AssetWise 平台和数据互联互通的 数字孪生平台 iTwin。 1.1 …

【六十四】【算法分析与设计】699. 掉落的方块,离散化操作,线段树优化,区间查询sum+区间更新update

699. 掉落的方块 在二维平面上的 x 轴上,放置着一些方块。 给你一个二维整数数组 positions ,其中 positions[i] [left(i), sideLength(i)] 表示:第 i 个方块边长为 sideLength(i) ,其左侧边与 x 轴上坐标点 left(i) 对齐。 每个…

SJMG—650T型微机控制静载锚固试验机

一.概述 SJMG-650T型微机控制静载锚固试验机是预应力锚具生产企业的出厂检验和型式试验、大型工程使用单位的锚具进场验收、产品质量监督部门对预应力锚具组装件检测的专用设备。该设备由宽调速范围数字伺服阀及微机测控技术,组成全自动闭环调速控制系统&#xff0…

IDM 平替 Gopeed Flutter 开源免费下载工具

IDM 平替 Gopeed Flutter 开源免费下载工具 视频 https://youtu.be/m206G5lVXPM https://www.bilibili.com/video/BV1Lz421k7Zp/ 前言 原文 https://ducafecat.com/blog/flutter-gopeed-downloader-idm-replace https://flutter.ducafecat.com/github/repo/GopeedLab/gopeed…

坚蛋运动新质生产力实践——“AI健康”战略引领产品和服务创新

进入AI时代,全球互联网企业均开启了以大模型及其应用为代表的第四次工业革命的激烈竞赛。坚蛋运动已在全国范围内布局300门店,预计实现2024年500、2025年1000门店,作为国内运动健康产业的头部品牌,坚蛋运动率先提出并推动“AI健康…

Docker 基本认识

一 国内: 阿里云 提供ECS(Elastic Compute Service)弹性计算服务,包括通用型、计算型、内存型等多种实例, 满足不同应用场景的需求。 支持按需付费、包年包月等多种计费方式。 腾讯云: 提供CVM&#…

重磅发布 | 《网络安全专用产品指南》(第一版)

2017年6月1日,《中华人民共和国网络安全法》正式实施,明确规定“网络关键设备和网络安全专用产品应当按照相关国家标准的强制性要求,由具备资格的机构安全认证合格或者安全检测符合要求后,方可销售或者提供。国家网信部门会同国务…