在 Ubuntu 环境下更新 Java 版本,是许多开发者常遇到的问题。不同场景下,选择合适的方法能够节省大量时间。下面梳理几种主流方案,从最基础的 APT 包管理器到更灵活的多版本管理工具,各有适用场景。
1. 使用 APT 包管理器更新(推荐,适用于大多数用户)
APT 是 Ubuntu 自带的包管理工具,用它来更新 OpenJDK 是最省心的方式。整个过程分几步走:
- 先运行
sudo apt update,这一步将系统本地的软件包索引与远程源同步,确保能获取到最新版本信息。 - 然后安装指定版本的 OpenJDK,命令格式为
sudo apt install openjdk-,将-jdk 替换为目标版本号即可,例如sudo apt install openjdk-17-jdk表示安装 OpenJDK 17。 - 安装完成后,使用
java -version验证,如果输出类似openjdk version "17.0.10" 2024-05-06,则说明更新成功。 - 如果系统中有多个 Java 版本,需要切换默认版本时,执行
sudo update-alternatives --config java,系统会列出所有已安装版本及其序号,输入目标版本的序号并回车,默认版本即可切换。
2. 添加 PPA 源获取最新版本(适用于需要较新 OpenJDK 的情况)
如果 APT 官方源中的 Java 版本偏旧,例如你想要 OpenJDK 21 但官方源尚未更新,则可以添加一个 PPA 源。操作也很简单:
- 运行
sudo add-apt-repository ppa:linuxuprising/java,添加 Linux Uprising 维护的 Java PPA,该源通常包含最新的稳定版 Java。 - 添加完源后,再运行
sudo apt update更新索引,然后使用sudo apt install openjdk-21-jdk安装最新版本。 - 安装完成后,同样用
java -version确认版本。
3. 使用第三方工具管理多版本(适用于需要频繁切换版本的用户)
如果工作中需要同时安装多个 Java 版本并频繁切换,推荐使用 jenv 或 SDKMAN 这类专用工具,它们比手动管理更方便。
3.1 使用 jenv 管理 Java 版本
jenv 是一个轻量级的 Java 版本管理工具,支持全局和局部版本切换,非常适合开发环境。
- 先安装依赖项:
sudo apt update && sudo apt install git curl。 - 然后安装 jenv 本身:
git clone https://github.com/jenv/jenv.git ~/.jenv,将仓库克隆到用户主目录。 - 配置 Shell 环境:编辑
~/.bashrc文件(如果使用 bash),添加以下内容:
保存后运行export PATH="$HOME/.jenv/bin:$PATH"eval "$(jenv init -)"source ~/.bashrc使配置生效。 - 添加已安装的 Java 版本到 jenv:例如安装完 OpenJDK 11 后,使用
jenv add /usr/lib/jvm/java-11-openjdk-amd64添加。 - 切换版本:
- 设置全局默认版本:
jenv global,例如jenv global 11.0.24。 - 设置当前目录的局部版本:
jenv local,仅对当前目录生效。
- 设置全局默认版本:
- 最后用
java -version验证,输出应显示 jenv 当前管理的版本。
3.2 使用 SDKMAN 管理 Java 版本
SDKMAN 是专门为管理 SDK 设计的工具,不仅支持 Java,还支持 Maven、Gradle 等,功能强大。
- 安装 SDKMAN:运行
curl -s "https://get.sdkman.io" | bash,下载并安装。完成后运行source "$HOME/.sdkman/bin/sdkman-init.sh"激活环境。 - 查看可用 Java 版本:
sdk list java,会列出所有可用的版本,包括 OpenJDK 和 Oracle JDK。 - 安装指定版本:
sdk install java,例如sdk install java 17.0.11-open。 - 切换版本:
- 设置全局默认版本:
sdk default java。 - 当前终端临时使用指定版本:
sdk use java。
- 设置全局默认版本:
- 验证:
java -version,输出应显示 SDKMAN 管理的当前版本。
注意事项
- 更新 Java 版本前,最好先确认应用程序与新版本是否兼容,例如检查依赖库的版本要求,避免因版本不匹配导致问题。
- 如果系统中有重要 Java 应用,更新前建议备份项目代码和配置文件,防止意外情况发生。
- 如果不再需要旧版本 Java,可以用
sudo apt remove openjdk-卸载,释放系统空间。-jdk
