游乐游手机版
首页/编程语言/文章详情

Ubuntu系统升级Java版本详细步骤教程

时间:2026-05-07 09:17
Ubuntu 升级 Ja va 的可行方案 给 Ubuntu 系统升级 Ja va,听起来简单,但路径选择不对,后续管理起来可能就有点头疼了。别担心,下面这份从检查到验证的完整指南,能帮你理清思路,找到最适合你的那条路。 一 前置检查 动手之前,先摸清家底。这步做好了,后续升级才能心中有数。 查看当

Ubuntu 升级 Ja va 的可行方案

给 Ubuntu 系统升级 Ja va,听起来简单,但路径选择不对,后续管理起来可能就有点头疼了。别担心,下面这份从检查到验证的完整指南,能帮你理清思路,找到最适合你的那条路。

一 前置检查

动手之前,先摸清家底。这步做好了,后续升级才能心中有数。

  • 查看当前版本与路径:
    • 敲入 ja va -versionja vac -version,看看系统当前默认的运行时和编译器版本。
    • which ja va 找到 Ja va 命令的位置,再用 readlink -f "$(which ja va)" 追根溯源,找到实际的 JDK 安装路径。这能帮你理解系统是如何找到 Ja va 的。
  • 更新索引并确认可用包:
    • 执行 sudo apt update 刷新软件包列表。
    • 运行 apt search openjdk | grep jdk,看看官方仓库里有哪些 OpenJDK 版本可供选择。
  • 一个小建议: 在安装新版本前,除非你非常确定,否则先别急着移除旧版本。等新版本安装并验证无误后,再考虑清理,这样可以最大程度避免业务意外中断。

二 方法一 使用 APT 安装或升级 OpenJDK(推荐)

对于大多数桌面和服务器环境,这是最省心、最推荐的方式。APT 包管理器会帮你自动处理所有依赖关系。

  • 安装指定版本: 以安装 OpenJDK 17 为例,命令很简单:
    • sudo apt update
    • sudo apt install openjdk-17-jdk
    如果你需要的是 Ja va 8、11 或 21,只需将包名相应地替换为 openjdk-8-jdkopenjdk-11-jdkopenjdk-21-jdk 即可。
  • 验证安装:
    • 再次运行 ja va -versionja vac -version,确认输出已经变成了新安装的版本。

三 方法二 手动安装 Oracle JDK 或特定发行版

如果你需要 Oracle 官方的 JDK,或者某个特定的发行版(如 Temurin、Zulu),手动安装能给你最大的控制权。以 JDK 17 为例:

  • 下载并解压:
    • 使用 wget 下载压缩包:wget https://download.oracle.com/ja va/17/latest/jdk-17_linux-x64_bin.tar.gz
    • 创建一个集中目录:sudo mkdir -p /usr/local/ja va
    • 解压到该目录:sudo tar -xzf jdk-17_linux-x64_bin.tar.gz -C /usr/local/ja va
  • 注册到 alternatives 并切换默认版本: 这是让系统识别手动安装 JDK 的关键步骤。
    • 将 Ja va 和 Ja vac 命令注册到 alternatives 系统: sudo update-alternatives --install /usr/bin/ja va ja va /usr/local/ja va/jdk-17/bin/ja va 100 sudo update-alternatives --install /usr/bin/ja vac ja vac /usr/local/ja va/jdk-17/bin/ja vac 100
    • 运行 sudo update-alternatives --config ja vasudo update-alternatives --config ja vac,从交互列表中选择刚注册的版本。
  • 设置环境变量: 确保应用能正确找到 JA VA_HOME。
    • 全局设置(影响所有用户): 编辑 /etc/environment 文件,添加: JA VA_HOME="/usr/local/ja va/jdk-17" PATH="$JA VA_HOME/bin:$PATH" 执行 source /etc/environment 或重新登录使生效。
    • 当前用户设置: 编辑你的 ~/.bashrc~/.zshrc 文件,添加: export JA VA_HOME=/usr/local/ja va/jdk-17 export PATH=$JA VA_HOME/bin:$PATH 执行 source ~/.bashrcsource ~/.zshrc 使生效。
  • 验证:
    • 检查版本:ja va -version, ja vac -version
    • 确认路径:echo $JA VA_HOME

四 方法三 多版本共存与切换工具

开发中经常需要在不同项目间切换 Ja va 版本,以下几个工具能让这件事变得轻松。

  • 使用系统 alternatives(系统级、简单可靠):
    • 查看已注册版本:update-alternatives --display ja va
    • 交互式切换:sudo update-alternatives --config ja va
    • 如果需要,用同样方式切换编译器:sudo update-alternatives --config ja vac
  • 使用 jEnv(开发场景、多版本管理更灵活): 这是一个专门管理多版本 Ja va 的命令行工具。
    • 安装:git clone https://github.com/jenv/jenv.git ~/.jenv
    • 初始化(以 bash 为例): echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(jenv init -)"' >> ~/.bashrc source ~/.bashrc
    • 添加 JDK:jenv add /usr/lib/jvm/ja va-11-openjdk-amd64(路径请替换为你的实际路径)
    • 切换:jenv global 11(全局生效)或 jenv local 11(仅在当前目录生效)
  • 使用 SDKMAN(WSL/Ubuntu 开发强烈推荐,支持项目级 .sdkmanrc): 功能更强大的多版本管理工具,支持多种 SDK。
    • 安装:curl -s "https://get.sdkman.io" | bash && source "$HOME/.sdkman/bin/sdkman-init.sh"
    • 安装与切换:sdk install ja va 17.0.10-temsdk use ja va 17.0.10-temsdk default ja va 17.0.10-tem
    • 项目级自动切换: 在项目根目录执行 sdk env init 生成 .sdkmanrc 文件,之后每次进入该项目目录,SDKMAN 会自动切换到指定的 JDK 版本,非常方便。

五 验证与常见问题处理

升级完成,别急着收工,做好验证才能高枕无忧。

  • 验证要点:
    • ja va -versionja vac -version 的输出必须一致,且都是你刚安装的目标版本。
    • which ja vareadlink -f "$(which ja va)" 的指向应该符合预期,通常是 /usr/bin/ja va -> /etc/alternatives/ja va -> 实际 JDK 的 bin/ja va 这个链条。
    • echo $JA VA_HOME 的路径必须与你选择的 JDK 安装目录完全一致。
  • 常见问题与修复:
    • 版本冲突或未切换成功: 重新运行 sudo update-alternatives --config ja va 进行选择。如果编译也有问题,记得同时配置 ja vac
    • 环境变量未生效: 确认你修改的是当前正在使用的 shell 配置文件(比如你用 zsh 却改了 bashrc),并执行了 source 命令或重新登录了终端。
    • 特定应用仍用旧版本: 一些应用(如 Tomcat)有独立的配置文件。检查其配置(例如 Tomcat 的 /etc/default/tomcat 中的 JA VA_HOME),修改后重启应用。
    • 清理旧版本:确认所有业务都不再依赖旧版本后,可以安全卸载,例如:sudo apt remove openjdk-8-jdk
来源:https://www.yisu.com/ask/78608930.html
上一篇Ubuntu系统检查Java是否安装及版本信息方法 下一篇Ubuntu系统Java版本冲突的解决方法与步骤
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
CentOS与Golang打包常见兼容性问题探讨
编程语言 · 2026-07-01

CentOS与Golang打包常见兼容性问题探讨

CentOS与Golang打包的兼容性问题集中在glibc版本不匹配、交叉编译环境变量错误、依赖库缺失及Go依赖管理不规范。可通过Docker容器编译、选择兼容Go版本、正确设置GOOS GOARCH环境变量、安装对应开发包及使用GoModules解决。

CentOS中Fortran与Python如何协同工作从入门到实战完整教程
编程语言 · 2026-07-01

CentOS中Fortran与Python如何协同工作从入门到实战完整教程

在CentOS中,Fortran与Python可通过f2py、SWIG、共享库调用或subprocess协同。f2py封装Fortran为Python模块,支持数组运算;共享库需手动对齐数据类型;系统调用适合独立计算。

CentOS中Golang打包优化方法
编程语言 · 2026-07-01

CentOS中Golang打包优化方法

在CentOS中优化Golang编译打包,可显著提升编译速度并减小二进制文件体积。关键技巧包括:设置环境变量、使用Go模块管理依赖、编译时添加-ldflags= "-s-w "去除调试信息、利用UPX工具压缩、运行strip清理符号表,以及优化cgo内C代码的编译选项。综合运用这些方法能有效优化最终程序。

在CentOS系统中cpustat与其他工具协同使用的完整方法
编程语言 · 2026-07-01

在CentOS系统中cpustat与其他工具协同使用的完整方法

cpustat作为sysstat包的CPU监控工具,可通过管道与grep等命令配合过滤数据,利用脚本自动记录带时间戳的日志,或结合图形工具查看,也可格式化输出后接入Zabbix、Grafana等Web监控系统,实现可视化与告警。

CentOS中readdir与其他Linux发行版的差异
编程语言 · 2026-07-01

CentOS中readdir与其他Linux发行版的差异

CentOS基于RHEL,与Ubuntu、Debian、Fedora在包管理器(yum dnfvsapt)、默认文件系统(XFSvsext4)等存在差异,但readdir等系统调用遵循POSIX标准,行为一致。