
对于运维工程师而言,Java是企业后端技术栈中不可或缺的一环。从经典的 Tomcat + Java 8 组合,到当下主流的 Spring Boot + Java 17,不同项目对Java版本的依赖各不相同,这常常导致以下典型问题:
- 遗留系统仅支持 Java 8。
- 新项目开发要求使用 Java 11 或 17。
- 诸如 Kafka、Elasticsearch 等第三方中间件对 Java 版本有特定限制。
- CI/CD流水线的构建环境与生产环境的Java版本不一致。
- 误操作导致线上服务使用了不兼容的Java版本,引发故障。
因此,掌握在Linux系统中高效、安全地管理多版本Java的能力,是运维工程师的核心技能之一。
第一步:确认系统已安装的Java版本
在开始操作前,务必遵循运维基本原则:先确认,后操作。在Ubuntu系统中,Java的多版本管理主要通过 update-alternatives 机制实现。
查看当前已安装的Java
执行以下命令,列出系统所有已注册的Java版本:
update-java-alternatives --list
命令输出将显示类似以下内容:

每一行代表一个已安装的Java版本,包含了名称、优先级和安装路径。如果列表中仅有一项,则意味着你需要先安装其他所需的Java版本。
第二步:在Ubuntu上安装其他Java版本(OpenJDK)
1. 查询可安装版本
Ubuntu官方仓库提供了丰富的OpenJDK版本。运行以下命令查看所有可用版本:
apt list -a openjdk-*-jdk*

常见的可选版本包括:
- Java 8 (老项目常用)
- Java 11 (企业级LTS版本)
- Java 17 (当前主流LTS版本)
- Java 21 (最新LTS版本)
运维建议:生产环境应优先选择长期支持(LTS)版本,如8、11、17或21,以获得更稳定的维护和安全更新。
2. 安装指定版本
例如,需要安装Java 17,可执行:
sudo apt install openjdk-17-jdk
安装完成后,再次运行 update-java-alternatives --list,确认新版本已成功加入列表。
在Ubuntu系统中,/usr/bin/java 并非真实的可执行文件,而是一个由 update-alternatives 管理的符号链接。这套机制完美实现了多版本Java的共存与透明切换,理解这一点能避免因盲目修改 JAVA_HOME 等环境变量而导致的系统混乱。
方法一:通过命令行切换Java版本(推荐)
这是服务器环境中最常用且最稳定的切换方式。
1. 交互式选择版本
执行以下命令进入版本选择界面:
sudo update-alternatives --config java
你将看到类似如下的选项列表:
There are 2 choices for the alternative java:
Selection Path Priority
------------------------------------------------------------
* 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111
2 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711
Press <enter> to keep the current choice, or type selection number:
输入你希望切换到的版本对应的编号(例如输入2选择Java 17),然后按回车。
2. 验证切换结果
执行以下命令验证当前生效的Java版本:
java --version
输出应显示为你刚刚选择的版本,例如:
openjdk 17.0.x 2023-xx-xx
重要提醒:请避免在业务高峰期进行Java版本切换。切换前务必确认相关应用(如Tomcat、Spring Boot服务)的兼容性,并评估是否需要重启服务。建议遵循“切换 → 验证 → 上线”的流程。
方法二:使用图形化工具(G Alternatives)
如果你使用的是Ubuntu桌面版,或希望进行直观演示,可以使用图形化工具。
1. 安装工具
sudo apt install galternatives
2. 启动并操作
启动工具:
sudo galternatives
在打开的图形界面中:
- 在左侧列表选择
java。
- 在右侧选择目标Java版本。
- 点击确认应用更改。
该工具本质上是 update-alternatives 命令的图形化封装,底层操作完全一致。
3. 最终验证
无论通过哪种方式切换,最后都请运行 java --version 以确保版本更改已生效,保障后续的运维操作或应用部署能基于正确的Java环境运行。