Windows下使用SDKMAN对JDK(Java)进行多版本管理
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