在Linux系统中升级JDK版本是开发运维中的常见需求,通常出于性能优化、安全补丁或新特性支持等目的,以下是详细的升级步骤,涵盖主流发行版(如Ubuntu/Debian和CentOS/RHEL)的两种安装方式(包管理器安装与手动安装),以及环境变量配置、旧版本卸载等关键环节。

升级前准备:备份旧JDK配置
升级前建议备份旧JDK的环境变量配置,避免因配置丢失导致服务异常,主要备份以下文件:
/etc/profile(系统全局环境变量)/etc/profile.d/java.sh(Java专用配置,若存在)- 用户家目录下的
.bashrc或.zshrc(用户级环境变量)
备份命令示例:
sudo cp /etc/profile /etc/profile.bak cp ~/.bashrc ~/.bashrc.bak
下载新JDK版本
根据需求选择JDK发行版(如Oracle OpenJDK、Adoptium Temurin、Amazon Corretto等),以Adoptium Temurin为例(支持多平台,免费开源):
官网下载(推荐)
访问Adoptium官网(https://adoptium.net/),选择对应系统架构(如x64)、操作系统(Linux)和JDK版本(如JDK 17),下载tar.gz压缩包。
命令行下载(无需浏览器)
使用wget直接下载(以JDK 17为例):
wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.9%2B9/OpenJDK17U-jdk_x64_linux_hotspot_17.0.9_9.tar.gz
安装新JDK
包管理器安装(适合Ubuntu/Debian或CentOS/RHEL)
Ubuntu/Debian系统:
# 更新软件源 sudo apt update # 安装OpenJDK 17(可替换为其他版本,如openjdk-11-jdk) sudo apt install openjdk-17-jdk -y
CentOS/RHEL系统:
# 安装EPEL源(若未安装) sudo yum install epel-release -y # 安装OpenJDK 17(CentOS 7/8适用,RHEL类似) sudo yum install java-17-openjdk-devel -y
注意:包管理器安装会自动处理环境变量,无需手动配置,但版本可能非最新。
手动安装(通用所有Linux发行版)
-
解压JDK压缩包
下载的文件通常存放在/home/user/Downloads,移动到/usr/local并解压:sudo mkdir -p /usr/local/java sudo tar -zxvf OpenJDK17U-jdk_x64_linux_hotspot_17.0.9_9.tar.gz -C /usr/local/java/ # 重命名目录(可选,方便管理) sudo ln -s /usr/local/java/jdk-17.0.9+9 /usr/local/java/latest
-
设置权限
确保普通用户有执行权限:sudo chown -R $USER:$USER /usr/local/java
配置环境变量
手动安装时需配置JAVA_HOME和PATH,确保系统识别新JDK。
编辑系统环境变量文件
sudo nano /etc/profile
在文件末尾添加以下内容(以JDK 17为例):
export JAVA_HOME=/usr/local/java/latest export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
说明:
CLASSPATH在现代Java开发中非必需,但保留可兼容旧项目。
使配置生效
source /etc/profile # 立即生效 # 或重启终端
验证环境变量
echo $JAVA_HOME # 应输出 /usr/local/java/latest echo $PATH # 应包含 $JAVA_HOME/bin
卸载旧JDK(可选)
若旧JDK不再使用,可卸载以节省空间。
查看已安装JDK版本
java -version javac -version
卸载旧版本
-
包管理器安装的JDK:
Ubuntu/Debian:sudo apt purge openjdk-11-jdk -y
CentOS/RHEL:sudo yum remove java-11-openjdk-devel -y -
手动安装的JDK:
直接删除目录:sudo rm -rf /usr/local/java/旧版本目录
清理环境变量
检查并编辑/etc/profile、~/.bashrc等文件,删除旧JAVA_HOME和PATH相关配置,然后执行source生效。
验证升级结果
执行以下命令确认JDK版本已更新:
java -version javac -version
预期输出应显示新版本(如OpenJDK 17.0.9),若仍显示旧版本,检查环境变量配置是否正确,或确认PATH中旧JDK路径未被优先覆盖。
相关问答FAQs
Q1: 升级JDK后,java -version仍显示旧版本,如何解决?
A: 可能原因:① 环境变量未正确配置或未生效,需检查/etc/profile、~/.bashrc中的JAVA_HOME和PATH,并执行source;② PATH中旧JDK路径优先级更高,可通过echo $PATH查看路径顺序,将$JAVA_HOME/bin调整到旧路径之前;③ 存在多个JDK版本,可使用update-alternatives工具切换(CentOS/RHEL适用:sudo update-alternatives --config java)。
Q2: 如何在Linux系统中同时管理多个JDK版本并随时切换?
A: 可使用update-alternatives工具(需root权限):
- 安装多个JDK后,注册到系统 alternatives:
sudo update-alternatives --install /usr/bin/java java /usr/local/java/latest/bin/java 1 sudo update-alternatives --install /usr/bin/javac javac /usr/local/java/latest/bin/javac 1
- 切换版本:
sudo update-alternatives --config java,根据提示选择目标版本。 - 验证切换结果:
java -version。
注:Ubuntu/Debian系统默认支持,CentOS/RHEL需确保
alternatives包已安装(sudo yum install alternatives -y)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/26625.html