在Linux系统中升级Java版本是常见运维任务,涉及版本确认、下载安装、环境变量配置等步骤,不同发行版(如Ubuntu、CentOS)和安装方式(手动安装、包管理器)操作略有差异,需结合实际场景选择合适方法,以下是详细操作流程及注意事项。
升级前的准备工作
-
确认当前Java版本
执行java -version
查看系统已安装的Java版本,若显示多个版本(如OpenJDK 8和11),需通过update-alternatives --config java
确认当前默认版本,避免误操作影响依赖旧版本的应用。
示例输出:openjdk version "11.0.12" 2021-07-20 OpenJDK Runtime Environment (build 11.0.12+7-post-Ubuntu-2ubuntu218.04) OpenJDK 64-Bit Server VM (build 11.0.12+7-post-Ubuntu-2ubuntu218.04, mixed mode, sharing)
-
备份重要数据
若Java版本被其他应用(如Tomcat、Spring Boot项目)依赖,升级前需备份应用配置文件、数据库等数据,防止版本不兼容导致服务异常。 -
确认系统架构
执行uname -m
检查系统是32位(i686)还是64位(x86_64),下载对应架构的Java安装包,避免因架构不匹配导致安装失败。
下载新版本Java升级包
方式1:手动下载安装包(适用于所有发行版)
-
OpenJDK(推荐):访问OpenJDK官网或镜像站点(如阿里云、华为云),选择目标版本(如JDK 17)和系统架构(如x64 Linux),下载
.tar.gz
压缩包。
示例命令(使用wget下载JDK 17):wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
-
Oracle JDK:需注册Oracle账号,从Oracle官网下载,注意商业使用需遵守许可协议。
方式2:使用包管理器安装(适用于Ubuntu/Debian、CentOS/RHEL)
-
Ubuntu/Debian系统:
更新软件源后,直接安装目标版本(如OpenJDK 17):sudo apt update sudo apt install openjdk-17-jdk -y
-
CentOS/RHEL系统:
若使用yum/dnf,需先安装EPEL源(若未安装),再安装Java:sudo yum install epel-release -y # CentOS 7及以下 sudo dnf install java-17-openjdk-devel -y # CentOS 8/RHEL 8及以上
卸载旧版本Java(可选)
若旧版本Java不再需要,可彻底卸载以释放空间;若需保留多版本切换,可跳过此步,直接使用update-alternatives
管理版本。
卸载OpenJDK(Ubuntu/Debian)
sudo apt purge openjdk-11-jdk -y # 替换为旧版本号 sudo apt autoremove -y # 清理残留依赖
卸载OpenJDK(CentOS/RHEL)
sudo yum remove java-1.8.0-openjdk -y # 替换为旧版本号
验证卸载
执行java -version
,若提示“command not found”,则卸载成功;若仍显示旧版本,需检查环境变量配置(如/etc/profile
中的JAVA_HOME
)。
安装新版本Java
方式1:手动安装tar.gz包
-
解压安装包
将下载的.tar.gz
包解压到指定目录(如/usr/lib/jvm/
):sudo mkdir -p /usr/lib/jvm sudo tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/lib/jvm/ # 解压到目标目录
-
创建符号链接(可选)
为方便路径管理,可创建软链接:sudo ln -sf /usr/lib/jvm/jdk-17 /usr/lib/jvm/java-default # 替换为实际解压目录名
方式2:包管理器安装(无需手动解压)
包管理器安装后,Java默认路径通常为:
- Ubuntu/Debian:
/usr/lib/jvm/java-17-openjdk-amd64/
- CentOS/RHEL:
/usr/lib/jvm/java-17-openjdk-xx.x.x.x86_64/
可通过ls /usr/lib/jvm/
确认具体路径。
配置环境变量
新版本Java安装后,需配置JAVA_HOME
和PATH
环境变量,确保系统可识别新版本。
编辑全局配置文件(推荐所有用户生效)
sudo vim /etc/profile
在文件末尾添加以下内容(根据实际Java路径调整):
export JAVA_HOME=/usr/lib/jvm/java-17 # 替换为Java实际安装路径 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
使配置生效
source /etc/profile # 立即生效 echo $JAVA_HOME # 验证JAVA_HOME是否正确输出
用户级配置(仅当前用户生效)
若仅需当前用户使用新版本Java,可编辑~/.bashrc
或~/.profile
,添加上述环境变量后执行source ~/.bashrc
。
验证Java版本升级
-
检查Java版本
执行java -version
,若显示新版本号(如JDK 17),则升级成功:openjdk version "17.0.2" 2022-01-18 OpenJDK Runtime Environment (build 17.0.2+8-86) OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)
-
检查javac编译器
执行javac -version
,确保编译器版本与Java版本一致:javac 17.0.2
-
测试Java程序
编写简单测试程序(如HelloWorld.java
),编译运行验证功能:echo 'public class HelloWorld { public static void main(String[] args) { System.out.println("Java 17 Test Success!"); } }' > HelloWorld.java javac HelloWorld.java java HelloWorld
多版本Java管理(可选)
若系统需保留多个Java版本,可使用update-alternatives
工具管理默认版本:
-
注册Java安装路径
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17/bin/java 1 # 优先级设为1 sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-11/bin/java 2 # 优先级设为2(旧版本)
-
切换默认版本
sudo update-alternatives --config java
按提示选择编号(如输入
1
选择JDK 17),确认后切换生效。 -
移除旧版本
若不再需要某版本,可执行:sudo update-alternatives --remove java /usr/lib/jvm/java-11/bin/java
不同Linux发行版Java安装命令对比
发行版 | 包管理器 | 安装OpenJDK 17命令 | 卸载旧版本命令 |
---|---|---|---|
Ubuntu 20.04+ | apt | sudo apt install openjdk-17-jdk -y |
sudo apt purge openjdk-11-jdk -y |
CentOS 7 | yum | sudo yum install java-17-openjdk-devel -y |
sudo yum remove java-1.8.0-openjdk |
CentOS 8/RHEL 8 | dnf | sudo dnf install java-17-openjdk-devel -y |
sudo dnf remove java-1.8.0-openjdk |
Fedora 35+ | dnf | sudo dnf install java-17-openjdk-devel -y |
sudo dnf remove java-1.8.0-openjdk |
相关问答FAQs
Q1:升级Java后,原有应用无法启动,报错“Unsupported major.minor version”怎么办?
A:该错误通常因应用编译时使用的Java版本与运行时版本不匹配(如应用基于JDK 8编译,但系统升级至JDK 17),解决方法:
- 检查应用编译所需的最低Java版本(查看
pom.xml
或build.gradle
文件); - 若应用需旧版本Java,通过
update-alternatives
切换回旧版本; - 若必须使用新版本,需重新编译应用源码或联系开发方提供兼容版本。
Q2:如何彻底卸载Linux系统中的Java,包括残留文件和环境变量?
A:彻底卸载Java需分步骤操作:
- 卸载安装包:
- Ubuntu/Debian:
sudo apt purge --auto-remove openjdk-* -y
- CentOS/RHEL:
sudo yum remove java-* -y
或sudo dnf remove java-* -y
- Ubuntu/Debian:
- 删除残留文件:
清理/usr/lib/jvm/
目录(sudo rm -rf /usr/lib/jvm/*
)和/etc/alternatives/
中的Java相关链接(sudo rm /etc/alternatives/java
); - 清理环境变量:
检查并编辑/etc/profile
、~/.bashrc
等文件,删除JAVA_HOME
、PATH
中的Java相关配置,执行source
命令使配置生效。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/22928.html