在一台电脑上安装多个Java版本怎么切换

来源:3D模型作者:又改需求头衔:程序员
导读:本期聚焦于又改需求创作的《在一台电脑上安装多个Java版本怎么切换》,敬请观看详情。很多开发场景需要在同一台电脑上安装多个Java版本,比如同时维护基于Java 8的旧项目和基于Java 17的新项目,这时候就需要掌握Java多版本切换的方法。不同的操作系统有不同的适配方案,Linux系统可以通过系统自带的工具实现版本切换,macOS和Windows也有对应的管理工具。合理的多版本管理方案可以避免版本冲突,提升开发效率,不需要反复卸载安装不同版本的Java。本文将详细介绍不同系统下的Java多版本管理方案,以及具体的切换操作步骤,帮助开发者快速适配不同的开发需求。

在一台电脑上安装多个Java版本怎么切换

一台电脑上安装多个Java版本怎么切换

在日常开发工作中,我们常常会遇到这样的困境:手上维护着一个老项目,它基于 Java 8 构建,而新启动的项目却要求使用 Java 17 甚至更高版本。如果每次都在系统里卸载重装,不仅浪费时间,还容易搞乱环境。更合理的做法是在同一台电脑上同时安装多个 Java 版本,并根据需要随时切换。本文将详细介绍在 Linux、macOS 和 Windows 三大主流操作系统上实现多 Java 版本切换的具体方法,帮助你轻松驾驭不同版本的 Java 环境。

为什么需要多 Java 版本切换

Java 语言发展至今已经经历了多个大版本迭代,每个版本都带来了新特性和改进。Java 8 引入了 Lambda 表达式和 Stream API,至今仍是许多企业级项目的首选;Java 11 成为长期支持版本,提供了模块化系统;Java 17 更是带来了密封类、模式匹配等现代语言特性。然而,很多遗留系统依然停留在 Java 8 上,因为迁移成本高、风险大。与此同时,新项目往往希望拥抱最新的技术栈。

在这种情况下,如果只能使用单一的 Java 版本,要么无法运行旧项目,要么无法体验新特性。多版本共存并灵活切换的方案应运而生。通过合理的管理工具或手动配置,我们可以让不同项目各自使用所需的 Java 版本,互不干扰。这不仅提高了开发效率,也降低了环境冲突的风险。

Linux 系统下的 Java 版本切换

Linux 系统(以 Ubuntu 为例)拥有强大的包管理机制和系统级版本管理工具update-alternatives。这个工具是系统自带的,无需额外安装,专门用于管理同一命令的多个版本,比如javajavacpython等。它的工作原理是通过符号链接将/usr/bin/java指向实际的可执行文件,切换时只需更改链接的目标。

安装多个 Java 版本

首先,我们需要通过包管理器安装不同版本的 OpenJDK。Ubuntu 的默认软件源通常包含多个 Java 版本,可以直接安装:

sudo apt update
sudo apt install openjdk-8-jdk   # 安装 Java 8
sudo apt install openjdk-17-jdk  # 安装 Java 17

安装完成后,这些 JDK 会被放置在/usr/lib/jvm/目录下,每个版本都有独立的文件夹,例如java-8-openjdk-amd64java-17-openjdk-amd64。此时系统默认使用的可能是最后安装的那个版本,但我们可以通过update-alternatives来自由切换。

注册 Java 版本到 alternatives 系统

为了让update-alternatives知道有哪些 Java 版本可用,我们需要手动将它们注册进去。注册时需要指定命令名称、可执行文件路径、优先级(数字越大优先级越高)。例如:

# 注册 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

这里我们将 Java 17 的优先级设为 2,Java 8 设为 1,因此默认情况下系统会使用 Java 17。当然,你也可以根据需要调整优先级数值。

切换 Java 版本

注册完成后,执行以下命令即可交互式地选择当前使用的 Java 版本:

sudo update-alternatives --config java
sudo update-alternatives --config javac

执行后,终端会列出所有已注册的版本及其路径,并提示你输入编号来选择。选择后,/usr/bin/java/usr/bin/javac这两个链接就会指向对应的可执行文件。此时再运行java -version,就能看到版本已经改变。

这种方式的优点是系统级生效,所有用户和终端都会受到影响。如果你只想在当前会话中临时切换,可以直接修改PATH环境变量,但不推荐,因为容易造成混乱。

macOS 系统下的 Java 版本切换

macOS 没有像 Linux 那样的update-alternatives工具,但我们可以借助第三方版本管理工具sdkman来实现。sdkman 是一个专门管理软件开发工具包(如 Java、Groovy、Scala、Kotlin 等)的命令行工具,它支持安装、切换、卸载多个版本,操作非常便捷。

安装 sdkman

打开终端,执行以下命令即可安装 sdkman:

curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"

安装完成后,你可以通过sdk version验证是否成功。sdkman 会将自身配置写入~/.bashrc~/.zshrc,以后每次打开终端都会自动加载。

安装多个 Java 版本

sdkman 维护了一个庞大的 Java 版本库,包括 Oracle JDK、OpenJDK、GraalVM、Liberica JDK 等多种发行版。首先查看可用的 Java 版本列表:

sdk list java

你会看到大量版本标识,例如8.0.372-tem(Temurin 发行的 Java 8)、17.0.7-tem(Temurin 发行的 Java 17)等。选择一个你需要的版本进行安装:

sdk install java 8.0.372-tem
sdk install java 17.0.7-tem

sdkman 会自动下载并解压到~/.sdkman/candidates/java目录下,并为每个版本建立独立文件夹。

切换 Java 版本

sdkman 提供了两种切换方式:临时切换和永久切换。

临时切换:只在当前终端窗口有效,关闭终端后恢复为默认版本。

sdk use java 8.0.372-tem

永久切换:修改默认版本,对所有新打开的终端生效。

sdk default java 17.0.7-tem

此外,你还可以通过sdk current java查看当前正在使用的版本。sdkman 还会自动管理JAVA_HOME环境变量,切换版本后无需手动修改。

值得一提的是,sdkman 不仅支持 Java,还支持 Maven、Gradle、Spring Boot 等众多工具的版本管理,可谓是一把瑞士军刀。

Windows 系统下的 Java 版本切换

Windows 系统没有原生的版本管理工具,但我们可以通过两种方式实现:一种是手动修改环境变量,另一种是使用第三方工具jabba

手动修改环境变量

首先,你需要从官网或可信渠道下载不同版本的 JDK 安装包,并将其安装到不同的目录,例如:

  • Java 8 安装到C:\Java\jdk1.8.0_372
  • Java 17 安装到C:\Java\jdk-17.0.7

安装完成后,修改系统环境变量:

  1. 右键点击“此电脑” → “属性” → “高级系统设置” → “环境变量”。
  2. 在“系统变量”中找到JAVA_HOME,将其值改为当前要使用的 JDK 路径,例如C:\Java\jdk1.8.0_372
  3. 确保Path变量中包含%JAVA_HOME%\bin。如果没有,手动添加。
  4. 点击“确定”保存所有设置。

之后打开一个新的命令提示符窗口,输入java -version即可看到版本已变更。注意:旧窗口的环境变量不会更新,必须新开窗口。

这种方法的缺点是不够灵活,每次切换都需要手动修改环境变量,并且容易忘记修改JAVA_HOME导致其他工具(如 Maven、Gradle)找不到正确的 JDK。因此,对于频繁切换的场景,推荐使用工具。

使用 jabba 工具

jabba 是一个专为 Java 版本管理设计的命令行工具,支持 Windows、macOS 和 Linux。它的用法与 sdkman 类似,但更轻量。

安装 jabba

在 Windows 上,你可以通过 PowerShell 或 Git Bash 运行以下命令安装:

curl -sL https://github.com/shyiko/jabba/raw/master/install.sh | bash

安装完成后,按照提示将 jabba 添加到 PATH 中,然后重新打开终端。

安装和切换 Java 版本

# 安装 Java 8 和 Java 17
jabba install openjdk@1.8.0
jabba install openjdk@17

# 切换版本(当前终端生效)
jabba use openjdk@1.8.0

# 设置默认版本
jabba alias default openjdk@17

jabba 会自动管理JAVA_HOMEPATH,切换后即时生效。它还支持从不同厂商(如 Amazon Corretto、AdoptOpenJDK、GraalVM)安装版本,只需修改标识即可。

通用注意事项与最佳实践

无论使用哪种操作系统和工具,都有一些通用的要点需要注意:

  • 切换后务必打开新终端验证:环境变量的更改通常不会影响已经打开的终端窗口。因此,在修改完配置后,最好关闭所有旧终端,重新打开一个新窗口再执行java -version确认。
  • 项目级版本隔离:如果你使用 IDE(如 IntelliJ IDEA、Eclipse),可以在项目设置中单独指定使用的 JDK 路径,而不必修改全局环境变量。这样可以避免不同项目之间的冲突。
  • 使用构建工具管理:Maven 和 Gradle 都支持通过配置指定 JDK 版本。例如,在 Maven 的pom.xml中可以设置<java.version>,在 Gradle 的build.gradle中可以设置sourceCompatibilitytargetCompatibility。但请注意,这只是在编译阶段约束字节码版本,运行时的 JDK 仍需与全局环境一致。
  • 善用别名和默认版本:无论是 sdkman 还是 jabba,都支持设置默认版本。建议将日常开发中最常用的版本设为默认,偶尔需要切换时再用临时命令。
  • 注意 32 位与 64 位架构:在 Windows 上,JDK 分为 x86 和 x64 版本,务必下载与操作系统匹配的版本,否则可能出现不兼容问题。

总之,多 Java 版本切换并不是一件复杂的事。Linux 用户可以直接利用系统自带的update-alternatives,macOS 和 Windows 用户推荐使用 sdkman 或 jabba 这类专用工具,它们能大大降低管理成本。掌握这些技巧后,你就可以在同一台电脑上从容应对各种 Java 版本的需求了。

Java多版本管理sdkmanupdate_alternatives环境变量修改时间:2026-08-23 02:50:25

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。