使用jabba在Windows上管理多个版本的JDK-详细教程

jabba是啥?

jabba是一款Java JDK 版本管理工具。类似于NodeJS里面的nvm,不知道大家有没有用过。nvm可以很方便的切换NodeJS版本。用 Go 编写。
jabba github地址

还有哪些其他的工具

比较常用的Java Jdk版本管理工具有JEnv、sdkman。这些工具大家可以研究一下。

jabba使用

1、下载jabba.exe

github下载地址

在这里插入图片描述我把jabba下载后放入:D:\jabba

2、管理员运行cmd进入jabba目录

在这里插入图片描述

进入cmd后默认在c盘,先切换到d盘再cd到jabba目录。

C:\WINDOWS\system32>d:

D:\>cd jabba

此时我们已经来到了jabba目录下面,里面有jabba.exe文件。

3、将系统中已安装的JDK链接到jabba中

有管理多个版本的JDK这个需求,那么必然电脑里是有一个或者多个jdk的。

jabba link system@1.8.40 D:\jdks\jdk1.8.0_40

上面的jdk版本名和jdk的路径改为自己的。注意:路径不能有空格,像Program Files也是不行的,需要把jdk复制到没有空格的目录中。

上面我们添加了一个jdk。使用下面的指令可以查看jdk。

jabba ls

可以看到下面出现了我们添加的jdk8。

D:\jabba>jabba ls
system@1.8.40

4、添加新的jdk到jabba中

添加新的jdk有两种方式。比如我需要下载jdk17.

1、方式1:使用jabba install 指令

下面是下载jdk17的版本。如果想下载其他版本自己去找jabba 的jdk版本号列表

jabba install zulu@1.17.0-0

下载完成

D:\jabba>jabba install zulu@1.17.0-0
Downloading zulu@1.17.0-0 (https://cdn.azul.com/zulu/bin/zulu17.0.33-ea-jdk17.0.0-ea.12-win_x64.zip)
209854784/209854784
Extracting C:\Users\ADMINI~1\AppData\Local\Temp\jabba-d-260013115 to C:\Users\Administrator\.jabba\jdk\zulu@1.17.0-0

D:\jabba>

但是这有个缺点就是jdk存储在C:\Users\Administrator\.jabba\jdk\存储在C盘比较恼火,而且没有修改的途径。所以我比较建议使用第二种方式。

注意:install 方式下载对于网络要求很高,建议科学上网并开启tun模式,懂的都懂。网络不行的建议使用方式2。

2、方式2:手动下载,链接到jabba中 - 推荐

我把下载好的jdk17放到D盘,再通过链接的方式加入jabba中。

jabba link system@1.17.0 D:\jdks\jdk1.17.0

使用相同的方式下载jdk11和jdk21。

5、切换使用的JDK版本

下面我切换为jdk17.

jabba use system@1.17.0

检查是否生效

java -version

好像并没有切换,接下来我们来解决这个问题。如果切换成功了就不用看下面的了。

注意:brew 包目前已损坏。我们正在修复。(不知道啥时候回修复好)

D:\jabba>java -version
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b25)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)

注意:我的系统是Windows10,没试过Win11好不好使。

首先使用管理员身份打开powershell,输入set-ExecutionPolicy RemoteSigned,然后会询问是否要更改执行策略,我们输入Y,回车。

PS C:\WINDOWS\system32> set-ExecutionPolicy RemoteSigned

执行策略更改
执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 https:/go.microsoft.com/fwlink/?LinkID=135170
中的 about_Execution_Policies 帮助主题所述。是否要更改执行策略?
[Y](Y)  [A] 全是(A)  [N](N)  [L] 全否(L)  [S] 暂停(S)  [?] 帮助 (默认值为“N”): Y

接下来运行下面的指令 (Windows 10)

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-Expression (
  Invoke-WebRequest https://github.com/shyiko/jabba/raw/master/install.ps1 -UseBasicParsing
).Content

等待一段时间下载完成。

PS C:\WINDOWS\system32> Invoke-Expression (
>>   Invoke-WebRequest https://github.com/shyiko/jabba/raw/master/install.ps1 -UseBasicParsing
>> ).Content
Installing v0.11.2...

Skipped update of D:\我的文档\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 (source string already present)

Installation completed
(if you have any problems please report them at https://github.com/shyiko/jabba/issues)

接下来切换jdk就成功了。成功从jdk8切换到jdk17.注意:这个切换只在这个powershell有效,下面回有如何设置全局的教程

PS C:\WINDOWS\system32> jabba ls
system@1.11.10
system@1.8.40
zulu@1.17.0-0

PS C:\WINDOWS\system32> java -version
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b25)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)

PS C:\WINDOWS\system32> jabba use zulu@1.17.0-0
PS C:\WINDOWS\system32> java -version
openjdk version "17-ea" 2021-03-16
OpenJDK Runtime Environment Zulu17+33-CA (build 17-ea+12)
OpenJDK 64-Bit Server VM Zulu17+33-CA (build 17-ea+12, mixed mode, sharing)
PS C:\WINDOWS\system32>
全局jdk设置

在第五步的基础上,把当前窗口的jdk设置配置为全局怎么办。

原理就是使用命令的方式配置环境变量。

1、修改原有的自己配置的环境变量,这里我把JAVA_HOME改了个名。

为啥要改名呢?因为下面设置全局jdk时也会使用JAVA_HOME这个名,会有冲突,不改的话可能会覆盖。
在这里插入图片描述
path里面也做相应的修改。

在这里插入图片描述
2、在powershell里面运行以下指令

$envRegKey = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment', $true)
$envPath=$envRegKey.GetValue('Path', $null, "DoNotExpandEnvironmentNames").replace('%JAVA_HOME%\bin;', '')
[Environment]::SetEnvironmentVariable('JAVA_HOME', "$(jabba which $(jabba current))", 'Machine')
[Environment]::SetEnvironmentVariable('PATH', "%JAVA_HOME%\bin;$envPath", 'Machine')

在这里插入图片描述运行完之后就配置好了环境变量。可以看到成功配置好了环境变量。

在这里插入图片描述
并且path里面把把jdk配置到第一位,这样我们使用jdk会走 JAVA_HOME,而不会走下面的JAVA_HOME_1。
在这里插入图片描述
验证

打开一个cmd窗口运行java -version,jdk版本成功设置为jdk17.
在这里插入图片描述
经过上面的流程,下面我总结一下,后续如何使用,因为不可能每一次切换都需要上面这么长的流程

总结 - 日常使用快速切换(只需简单三步)

注意:没看过博客上面的内容的,请先看一下,走下流程。

日常使用快速切换,步骤如下。首先管理员身份打开powershell,注意:一定要是管理员身份。

1、查看版本列表

jabba ls

在这里插入图片描述

2、切换jdk版本,比如我要切换到jdk11

jabba use system@1.11.10

在这里插入图片描述

3、设置全局

[Environment]::SetEnvironmentVariable('JAVA_HOME', "$(jabba which $(jabba current))", 'Machine')

在这里插入图片描述

打开一个cmd窗口可以看到设置成功。

在这里插入图片描述
接下来就可以愉快的play了。

大家有其他好用的jdk版本管理工具,可以给我留言。

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值