在开发过程中,我们经常会遇到需要在同一台电脑上运行不同Java版本的场景,比如旧项目依赖Java 8,新项目需要使用Java 17的特性,这时候就需要掌握多Java版本的安装与切换方法。不同操作系统的切换逻辑存在差异,下面分别介绍主流系统的实现方案。

Linux系统下的Java版本切换
Linux系统(以Ubuntu为例)可以通过update-alternatives工具管理多个Java版本,该工具是系统自带的版本管理组件,无需额外安装。
1. 安装多个Java版本
首先通过包管理器安装不同版本的Java,比如安装Java 8和Java 17:
# 安装Java 8 sudo apt update sudo apt install openjdk-8-jdk # 安装Java 17 sudo apt install openjdk-17-jdk
2. 注册Java版本到alternatives系统
安装完成后,需要将Java的可执行文件注册到update-alternatives中:
# 注册Java 8 sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-8-openjdk-amd64/bin/java 1 sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-8-openjdk-amd64/bin/javac 1 # 注册Java 17 sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk-amd64/bin/java 2 sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-17-openjdk-amd64/bin/javac 2
命令末尾的数字是优先级,数字越大优先级越高,切换时可以按优先级排序选择。
3. 切换Java版本
执行以下命令选择要使用的Java版本:
# 切换java命令版本 sudo update-alternatives --config java # 切换javac命令版本 sudo update-alternatives --config javac
执行后会列出所有注册的Java版本,输入对应编号即可完成切换,之后可以通过java -version命令验证版本是否切换成功。
macOS系统下的Java版本切换
macOS系统推荐使用sdkman工具管理多版本Java,该工具支持多种SDK的版本管理,操作更便捷。
1. 安装sdkman
打开终端执行以下命令安装sdkman:
curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh"
2. 安装多个Java版本
通过sdkman安装需要的Java版本:
# 列出所有可用的Java版本 sdk list java # 安装Java 8 sdk install java 8.0.372-tem # 安装Java 17 sdk install java 17.0.7-tem
3. 切换Java版本
切换版本有两种方式,临时切换和永久切换:
# 临时切换,仅当前终端生效 sdk use java 8.0.372-tem # 永久切换,全局生效 sdk default java 8.0.372-tem # 查看当前使用的Java版本 sdk current java
Windows系统下的Java版本切换
Windows系统可以通过修改环境变量实现Java版本切换,也可以借助工具简化操作。
1. 手动切换(修改环境变量)
首先安装多个Java版本到不同的目录,比如Java 8安装到C:Javajdk1.8.0_372,Java 17安装到C:Javajdk-17.0.7。
然后修改系统环境变量:
- 右键此电脑,选择属性,进入高级系统设置,点击环境变量
- 在系统变量中找到
JAVA_HOME变量,将其值修改为当前要使用的Java安装目录,比如要使用Java 8就改为C:Javajdk1.8.0_372 - 确保系统变量的
Path中包含%JAVA_HOME%bin
修改完成后打开新的命令提示符,执行java -version验证版本。
2. 使用工具简化切换
Windows下可以使用jabba工具管理Java版本,安装和使用方式类似sdkman:
# 安装jabba curl -sL https://github.com/shyiko/jabba/raw/master/install.sh | bash # 安装Java版本 jabba install openjdk@1.8.0 jabba install openjdk@17 # 切换版本 jabba use openjdk@1.8.0
通用注意事项
- 切换版本后一定要打开新的终端窗口验证,旧终端的环境变量不会自动更新
- 项目级版本切换可以在项目的启动脚本中临时设置
JAVA_HOME变量,避免影响全局配置 - 如果使用IDE开发,也可以在IDE中单独配置项目使用的Java版本,不需要修改全局环境变量
不同方案各有优劣,Linux用户优先使用系统自带的update-alternatives,macOS和Windows用户推荐使用sdkman或jabba这类专用工具,能大幅降低多版本管理的复杂度。
Java多版本管理sdkmanupdate_alternatives环境变量修改时间:2026-06-12 01:33:20