JDK多版本管理工具安装和使用详细教程
作者:放弃 治疗
概要
Jabba 是一个开源的多版本 Java 管理工具,类似于 SDKMAN!,它支持多个 JDK 版本的管理,
本文主要讲解在Windows系统安装Jabba ,并且适用于 Windows、macOS 和 Linux 系统
以下是你可以选择的一些方法:
通过 Windows Terminal 配置不同环境变量:
- 在 Windows Terminal 中,你可以为每个配置(例如 PowerShell 或 Command Prompt)设置不同的环境变量
JAVA_HOME
和Path
,确保每次启动时自动切换到指定的 JDK 版本。
- 在 Windows Terminal 中,你可以为每个配置(例如 PowerShell 或 Command Prompt)设置不同的环境变量
使用开源工具(如 Jabba 和 SDKMAN!):
- Jabba 是一个简单的多版本管理工具,支持在 Windows 上安装并切换不同的 JDK 版本。你可以通过命令行安装 JDK,并随时切换所需版本。
- SDKMAN! 也可以通过 Windows 子系统 Linux(WSL)使用,支持跨平台切换 JDK 版本。它适用于需要多版本管理的开发者。
手动配置多个 JDK 版本:
- 如果不想使用额外的工具,你可以手动安装多个 JDK 版本,并通过脚本或环境变量的修改,在不同的终端会话中切换。
以下为参考信息
方法一:手动管理 JDK 版本切换
安装多个 JDK 版本
- 你可以在不同的目录下安装多个 JDK 版本,例如:
C:\Program Files\Java\jdk1.8.0_281
C:\Program Files\Java\jdk-21
- 你可以在不同的目录下安装多个 JDK 版本,例如:
设置 JAVA_HOME 环境变量
- 每次你想切换 JDK 版本时,可以手动更改
JAVA_HOME
环境变量,指向不同的 JDK 安装目录。 - 具体操作步骤:
- 打开 系统属性 → 高级系统设置 → 环境变量。
- 在 系统变量 中找到
JAVA_HOME
,然后编辑它的值,指向你想使用的 JDK 路径。 - 编辑完
JAVA_HOME
后,更新Path
变量,确保Path
变量中包含%JAVA_HOME%\bin
。
- 每次你想切换 JDK 版本时,可以手动更改
验证 JDK 切换
- 每次切换完
JAVA_HOME
后,打开命令行终端,使用java -version
和javac -version
命令来检查当前 JDK 版本。
- 每次切换完
方法二:使用批处理脚本(方便切换)
你可以编写一个简单的 批处理脚本(.bat 文件)来自动切换 JDK 版本。例如:
@echo off SET JDK_VERSION=21 IF "%JDK_VERSION%"=="8" SET JAVA_HOME=C:\Program Files\Java\jdk1.8.0_281 IF "%JDK_VERSION%"=="21" SET JAVA_HOME=C:\Program Files\Java\jdk-21 SET PATH=%JAVA_HOME%\bin;%PATH% echo Switched to JDK version %JDK_VERSION% java -version
每种方法都有其适用场景,Jabba 和 SDKMAN! 都能提供简便的版本管理,而手动配置则更灵活适合不依赖第三方工具的开发者。如果你需要更高级的隔离环境,还可以考虑使用 Docker 容器化 JDK。
工具安装和使用流程
7/15/2025, 5:50:33 PM
windows的开源jdk多版本管理工具
7/15/2025, 5:50:44 PM
在 Windows 上,虽然不像 Linux 和 macOS 那样有像 SDKMAN! 和 Jenv 这样的多版本管理工具,但依然可以使用一些开源工具来管理多个 JDK 版本。下面是几种适合 Windows 的开源 JDK 多版本管理工具:
1.Jabba
Jabba 是一个开源的多版本 Java 管理工具,类似于 SDKMAN!,它支持多个 JDK 版本的管理,并且适用于 Windows、macOS 和 Linux 系统。
安装和使用 Jabba:
GitHub的Jabba的地址:https://github.com/shyiko/jabba/tree/0.11.2
安装 Jabba:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 Invoke-Expression ( Invoke-WebRequest https://github.com/shyiko/jabba/raw/master/install.ps1 -UseBasicParsing ).Content
如下图所示安装成功 执行命令 jabba --version 查询当前安装成功的版本
分两种方式
一:关联将系统 JDK 与 Jabba 关联
一定要使用终端,以管理员的身份运行
1. 在 PowerShell 中使用 jabba link 命令: 通过 jabba link
命令将系统的 JDK 与 Jabba 进行关联命令:jabba link system@1.8.0 "C:\Program Files\Java\jdk1.8.0_251"
如果关联不了一定要确认jdk的路径不能带有空格的路径文件名下,解决方法请下滑页面到技术细节
2. 通过查询jdk 命令:jabba ls
3. 切换系统的版本的命令:jabba use system@1.8.0
如图所示,我当前的版本是21
jabba use system@1.8.0
如果切换版本报错,请下滑页面到技术细节
如下图所示切换就成功了
4. 删除错误的 JDK 版本链接的名称
二:通过jabba进行安装jdk
安装 JDK 版本:
- 例如,安装 JDK 8 和 JDK 11:
jabba install adoptopenjdk@8 jabba install adoptopenjdk@11
- 例如,安装 JDK 8 和 JDK 11:
切换 JDK 版本:
- 使用以下命令来切换 JDK 版本:
jabba use adoptopenjdk@8 jabba use adoptopenjdk@11
- 使用以下命令来切换 JDK 版本:
查看已安装的 JDK 版本:
- 列出所有安装的 JDK 版本:
jabba ls
- 列出所有安装的 JDK 版本:
技术细节
带有空格的文件名路径的jdk,需要卸载重新安装jdk就可以解决了
如图所示就是解决了
切换jdk版本错误解决,如图所示报错问题
需要将配置的系统变量删除
删除以下变量:
用户变量和系统变量中的
JAVA_HOME
用户变量和系统变量中的
CLASSPATH
path 里的相关联的变量
虽然删除完了系统变量,但是安装的jabba在文件中文路径下导致系统识别jdk路径乱码,如图所示
需要卸载重新安装jabba。
步骤 2:修复 Jabba 安装位置
powershell # 1. 卸载当前有问题的 Jabba Remove-Item -Recurse -Force ~\.jabba # 2. 设置英文安装路径(避开中文用户名问题) $env:JABBA_HOME = "C:\.jabba" # 3. 重新安装 Jabba [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 Invoke-Expression ( Invoke-WebRequest https://github.com/shyiko/jabba/raw/master/install.ps1 -UseBasicParsing ).Content # 4. 永久设置 JABBA_HOME [System.Environment]::SetEnvironmentVariable('JABBA_HOME', 'C:\.jabba', 'User')
环境变量需要添加上并且一定要关闭 终端,再重新打开终端
处理完成之后,重新回到上滑页面到使用教程,重新按照步骤添加以下就能够成功了,如下图所示
- 简单易用,命令行管理。
- 支持 JDK 版本的安装和切换。
- 跨平台支持,适用于 Windows、Linux 和 macOS。
注意这里的环境变量一定要删除
如果当前系统还存在tomcat需要启动的情况,可以配置如下所示
全局环境变量配置
获取 Java 路径:
powershell
jabba which system@1.8.0 # 输出示例:C:\.jabba\jdk\system@1.8.0
设置系统环境变量:
按
Win + R
→ 输入sysdm.cpl
高级 → 环境变量 → 新建系统变量:
变量名:JAVA_HOME 变量值:C:\.jabba\jdk\system@1.8.0
编辑 PATH → 添加:
%JAVA_HOME%\bin
验证:
powershell
# 新开终端执行 java -version
启动 Tomcat:
powershell
cd D:\soft-xiao\nutrisystem_file\apache-tomcat-9.0.55\bin .\startup.bat
小结
到此这篇关于JDK多版本管理工具安装和使用的文章就介绍到这了,更多相关JDK多版本管理工具安装使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!