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

Ubuntu系统安装最新Java版本详细步骤教程

时间:2026-05-10 08:34
在Ubuntu上安装Java需根据项目需求选择版本,常用LTS版本如OpenJDK11或17。可通过官方仓库直接安装,并利用工具管理多版本切换。为满足开发需求,常需配置JAVA_HOME环境变量。若官方仓库无所需版本,可借助第三方PPA或手动安装特定版本。安装后务必验证版本以确保成功。

在Ubuntu系统中安装Java开发环境,对于开发者而言是一项基础且关键的技能。虽然通过几条命令即可完成基础安装,但面对版本选择、多环境配置以及生产部署等复杂场景时,仍需系统性的指导。本文将为你提供一份从零开始的完整指南,涵盖Ubuntu安装Java的多种方法、版本管理技巧以及环境变量配置,助你高效搭建稳定可靠的Java开发平台。

如何在Ubuntu上安装最新Ja va版本

一、安装前的准备工作与版本选择策略

在开始执行任何安装命令前,充分的准备工作能有效避免后续的兼容性问题与配置错误。

首先,更新系统软件包列表并升级现有软件,确保获取最新的仓库信息:

sudo apt update && sudo apt upgrade -y

接着,检查当前系统是否已安装Java及其版本信息:

ja va -version
ja vac -version

核心步骤在于选择合适的Java版本。你的选择应基于实际开发或运行需求:

  • 企业级生产环境推荐:建议选择OpenJDK 11OpenJDK 17。这两个均为长期支持(LTS)版本,拥有出色的稳定性、安全更新及广泛的社区支持。
  • 维护遗留系统:许多传统项目仍依赖于OpenJDK 8。它同样是LTS版本,在旧系统兼容性方面表现良好。
  • 学习与前沿技术探索:可通过官方仓库安装最新的非LTS版本以体验最新语言特性,但请注意其可能不适用于对稳定性要求极高的生产服务器。

二、通过APT仓库安装OpenJDK(推荐方案)

对于大多数Ubuntu用户,通过系统自带的APT软件仓库安装OpenJDK是最便捷、最安全的方式。安装JDK(Java Development Kit)将自动包含JRE(Java Runtime Environment)。

根据你的版本选择,执行对应的安装命令:

# 安装 OpenJDK 11
sudo apt install openjdk-11-jdk -y

# 安装 OpenJDK 17
sudo apt install openjdk-17-jdk -y

# 安装 OpenJDK 8
sudo apt install openjdk-8-jdk -y

安装完成后,务必进行验证,确认安装成功:

ja va -version
ja vac -version

如果终端正确显示了所安装的版本号,则表明基础环境已就绪。若官方仓库未提供所需版本,请参考下文的手动安装方案。

三、实现多版本Java共存与灵活切换

开发工作中常需在不同项目间切换Java版本。利用Ubuntu内置的update-alternatives工具,可以轻松管理多个Java安装。

首先,查看系统中所有已注册的Java版本,并设置默认版本:

sudo update-alternatives --config ja va

执行后,终端将显示一个带编号的版本列表。输入你希望设为默认的版本编号并按回车确认。

对于开发者,还需同步设置Java编译器(javac)的默认版本:

sudo update-alternatives --config ja vac

选择对应编号后,再次使用ja va -versionja vac -version命令检查,确保运行时与编译器版本一致。

四、配置JAVA_HOME环境变量(关键步骤)

JAVA_HOME环境变量是许多Java应用(如Maven、Gradle、Spring Boot)和集成开发环境(如IntelliJ IDEA、Eclipse)定位Java安装目录所必需的。虽然运行简单Java程序可能无需此变量,但对于完整的开发环境,配置它是标准实践。

第一步:定位Java安装路径。 推荐使用以下命令获取精确路径:

readlink -f /usr/bin/ja va

该命令将输出类似/usr/lib/jvm/ja va-11-openjdk-amd64/bin/ja va的路径。你需要移除末尾的/bin/ja va,得到/usr/lib/jvm/ja va-11-openjdk-amd64,此即你的JAVA_HOME路径。

第二步:设置环境变量。 可根据需要选择用户级或系统级配置:

方案A:用户级配置(更安全常用)
编辑当前用户的shell配置文件(例如,使用Bash则编辑~/.bashrc,使用Zsh则编辑~/.zshrc):

nano ~/.bashrc

在文件末尾添加以下行(请根据你的实际路径修改):

export JA VA_HOME=/usr/lib/jvm/ja va-11-openjdk-amd64
export PATH=$PATH:$JA VA_HOME/bin

保存并退出编辑器,然后使配置立即生效:

source ~/.bashrc

方案B:系统级配置(对所有用户生效)
编辑系统环境配置文件:

sudo nano /etc/environment

在文件中添加(注意此处无需export关键字):

JA VA_HOME="/usr/lib/jvm/ja va-11-openjdk-amd64"

保存退出后,加载该配置文件:

source /etc/environment

最后,使用以下命令验证配置是否成功:

echo $JA VA_HOME
ja va -version

五、高级安装:手动安装与第三方仓库

当Ubuntu官方仓库未提供所需Java版本(例如在新系统上安装旧版OpenJDK 8),或你需要安装特定发行版(如Oracle JDK)时,可采用以下方法。

方法一:添加第三方PPA仓库
一些社区维护的PPA仓库提供了额外的软件包。例如,为较新Ubuntu系统安装OpenJDK 8:

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt update
sudo apt install openjdk-8-jdk -y

请注意,使用第三方仓库时应评估其可信度与维护状态。

方法二:手动安装.tar.gz压缩包
此方法适用于安装特定版本或Oracle JDK。

  1. 从官方站点(如Adoptium、Oracle官网)下载对应的.tar.gz安装包。
  2. 解压到当前目录:tar -xzf openjdk-XX_linux-x64_bin.tar.gz
  3. 将解压后的目录移至系统目录,例如:sudo mv jdk-XX /usr/local/ja va
  4. 手动将其注册到update-alternatives系统:
    sudo update-alternatives --install /usr/bin/ja va ja va /usr/local/ja va/bin/ja va 100
    sudo update-alternatives --install /usr/bin/ja vac ja vac /usr/local/ja va/bin/ja vac 100
  5. 最后,使用sudo update-alternatives --config ja va命令选择新安装的版本。

无论采用何种安装方式,完成后的最终验证步骤不可或缺:

ja va -version
ja vac -version

当终端正确显示你安装的Java版本号时,说明你的Ubuntu Java开发环境已成功配置,可以立即开始编码或部署应用了。

来源:https://www.yisu.com/ask/66996184.html
上一篇Debian系统交换空间与其他内存管理技术的协同工作机制 下一篇Ubuntu系统下PHP-FPM最大连接数配置与优化指南
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

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

同类最新

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

更多
Java序列化中ObjectStreamField自定义字段控制详解
编程语言 · 2026-05-11

Java序列化中ObjectStreamField自定义字段控制详解

ObjectStreamField是描述序列化字段的元信息载体。通过声明serialPersistentFields数组并确保字段名、类型、顺序与类定义严格一致,可控制序列化字段。字段不匹配会导致静默反序列化失败。配合writeObject readObject方法可实现动态控制。应避免使用isUnshared、getOffset等底层方法。

实时操作系统RTOS线程调度与Java强实时变量处理对比分析
编程语言 · 2026-05-11

实时操作系统RTOS线程调度与Java强实时变量处理对比分析

实时操作系统(RTOS)通过优先级调度和中断机制确保微秒级确定性,而Java因垃圾回收、同步延迟和内存分配不确定性,难以满足强实时场景的严格时间要求,因此这类系统通常将核心逻辑交由RTOS处理。

Java并行流性能优化CollectorsgroupingByConcurrent方法详解
编程语言 · 2026-05-11

Java并行流性能优化CollectorsgroupingByConcurrent方法详解

Collectors groupingByConcurrent专为无需保持插入顺序、高并发写入的场景设计,能显著提升并行流分组性能。其底层通过所有线程直接写入同一个ConcurrentHashMap,避免了普通groupingBy的合并开销。适用于日志聚合、实时统计等高吞吐任务,但不适用于要求分组顺序的场景。使用时必须搭配并行流,且不支持自定义有序Map。在

循环队列数组实现详解头尾指针操作与取模运算实战指南
编程语言 · 2026-05-11

循环队列数组实现详解头尾指针操作与取模运算实战指南

循环队列通过数组实现,核心在于头尾指针的职责与取模运算。front指向队首,rear指向下一个空位,移动时需取模以确保回环。判空条件为front等于rear,判满则需牺牲一个存储单元。入队和出队操作后需立即取模,避免越界。动态内存管理时需注意分配与释放顺序,防止内存泄漏。

ThinkPHP入口文件配置参数修改与环境变量动态加载指南
编程语言 · 2026-05-11

ThinkPHP入口文件配置参数修改与环境变量动态加载指南

在ThinkPHP框架中动态调整数据库连接等配置参数,是许多开发者实现多环境部署的核心需求。然而,你是否曾遇到这样的困境:在入口文件中修改了配置值,刷新页面后却发现更改并未生效?这通常源于对框架配置加载机制的理解偏差。 本文将深入解析ThinkPHP配置生效的唯一正确路径,帮助你彻底规避“本地测试通