Linux系统Java如何更新与升级
导读:Linux系统Java更新与升级实操指南 一 前置检查与准备 查看当前版本与路径:运行命令查看已安装的 Java/JDK 版本与可执行文件位置。 命令:java -version、javac -version、which java、re...
Linux系统Java更新与升级实操指南
一 前置检查与准备
- 查看当前版本与路径:运行命令查看已安装的 Java/JDK 版本与可执行文件位置。
- 命令:
java -version、javac -version、which java、readlink -f $(which java)
- 命令:
- 规划目标版本:确认要升级到的 主版本(如 8/11/17/21) 与发行版(OpenJDK/Oracle JDK),并准备好相应仓库或安装包。
- 备份与变更窗口:对生产环境安排维护窗口,备份关键应用配置与启动脚本(涉及 JAVA_HOME、启动器脚本等)。
二 使用包管理器升级(推荐)
- 适用于通过系统仓库安装的 OpenJDK,升级简单、可自动解决依赖。
- 常见发行版命令如下:
| 发行版与工具 | 更新索引 | 安装/升级指定版本 | 设置默认版本 |
|---|---|---|---|
| Debian/Ubuntu(APT) | sudo apt update |
sudo apt install openjdk-17-jdk(示例) |
sudo update-alternatives --config java |
| RHEL/CentOS 7(YUM) | sudo yum makecache |
sudo yum install java-17-openjdk-devel |
sudo alternatives --config java |
| Fedora/RHEL 8+(DNF) | sudo dnf makecache |
sudo dnf install java-17-openjdk-devel |
sudo alternatives --config java |
- 说明:
- 包名可能因发行版而异(如是否包含 -devel、是否区分 jre/jdk)。
- 若需跨主版本升级(如 8→17),建议先安装新版本,再用
update-alternatives或alternatives切换默认,再按需卸载旧包。
三 手动安装与升级(下载安装包或解压版)
- 适用场景:需要特定厂商/版本、或仓库版本不满足需求时。
- 步骤:
- 下载并解压 JDK
- 示例:
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz - 解压:
sudo tar -xzf jdk-17_linux-x64_bin.tar.gz -C /usr/local/
- 示例:
- 注册到系统版本切换(可选但推荐)
- 添加命令:
sudo update-alternatives --install /usr/bin/java java /usr/local/jdk-17/bin/java 2000 - 交互选择:
sudo update-alternatives --config java
- 添加命令:
- 配置环境变量(系统级)
- 新建文件:
sudo tee /etc/profile.d/jdk.sh < < 'EOF'export JAVA_HOME=/usr/local/jdk-17export PATH=$JAVA_HOME/bin:$PATHEOF
- 生效:
source /etc/profile.d/jdk.sh
- 新建文件:
- 验证
java -version、javac -version、echo $JAVA_HOME
- 下载并解压 JDK
- 提示:
- 手动安装不会自动写入 alternatives,需手动
update-alternatives --install。 - 如需同时切换
javac/javadoc等工具,可为每个命令单独注册到 alternatives。
- 手动安装不会自动写入 alternatives,需手动
四 多版本共存与切换
- 系统自带工具
- update-alternatives(Debian系)/alternatives(RHEL系):统一管理
/usr/bin/java等符号链接,支持交互选择与优先级。- 查看/切换:
update-alternatives --config java或alternatives --config java - 原理要点:切换的是软链接,如
/usr/bin/java -> /etc/alternatives/java -> 实际JDK路径/bin/java
- 查看/切换:
- update-alternatives(Debian系)/alternatives(RHEL系):统一管理
- 开发者工具
- SDKMAN!:管理多版本 JDK 与其他 JVM 生态工具,支持按项目设置本地版本。
- 安装:
curl -s "https://get.sdkman.io" | bash - 使用:
sdk list java、sdk install java 17.0.9-tem、sdk default java 17.0.9-tem
- 安装:
- jenv:轻量版本管理,支持 global/local/shell 三级作用域与插件扩展。
- 安装:
git clone https://github.com/jenv/jenv.git ~/.jenv - 配置:
echo 'export PATH="$HOME/.jenv/bin:$PATH"' > > ~/.bashrc & & echo 'eval "$(jenv init -)"' > > ~/.bashrc & & source ~/.bashrc - 使用:
jenv add /usr/lib/jvm/jdk-17、jenv global 17、jenv local 11
- 安装:
- SDKMAN!:管理多版本 JDK 与其他 JVM 生态工具,支持按项目设置本地版本。
- 选择建议:
- 个人开发环境优先 SDKMAN! 或 jenv(切换灵活、隔离好)。
- 服务器环境优先 update-alternatives/alternatives(系统级一致、可审计)。
五 验证与常见问题处理
- 验证清单
- 版本:
java -version、javac -version - 路径:
which java、readlink -f $(which java)、echo $JAVA_HOME - 编译运行:简单程序验证
HelloWorld.java能编译与运行
- 版本:
- 常见问题
- “java: command not found”:检查 PATH 是否包含
$JAVA_HOME/bin,或是否通过update-alternatives注册。 - 环境变量未生效:确认修改的是当前使用的 shell 配置文件(如
~/.bashrc、~/.zshrc)或/etc/profile.d/jdk.sh,并执行source重载。 - 多版本冲突:使用
update-alternatives --config java明确选择默认版本;必要时为javac/javadoc等也做 alternatives 配置。 - 升级后应用仍用旧版本:检查应用启动脚本、systemd 服务、
JAVA_HOME、以及是否被容器/进程内硬编码指定了路径。
- “java: command not found”:检查 PATH 是否包含
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux系统Java如何更新与升级
本文地址: https://pptw.com/jishu/768607.html
