Ubuntu怎么配置Java环境?,Ubuntu安装Java的详细教程

Ubuntu 配置 Java 的完整指南:从安装到环境变量一步到位

在 Ubuntu 系统中配置 Java 环境,核心结论是:使用 OpenJDK 配合 apt 包管理器或 SDKMAN 版本管理工具,是当前最稳定、最推荐的方案,本文基于实际生产环境经验,给出从零开始的完整配置流程,并附上常见问题解决方案,帮助开发者避开环境配置的”坑”。

为什么选择 OpenJDK 而非 Oracle JDK?

  • 开源免费:OpenJDK 是完全开源的 Java 实现,Ubuntu 官方仓库直接提供,无需手动下载解压。
  • 兼容性最佳:Ubuntu 系统库和大多数应用默认依赖 OpenJDK,通过 apt 安装能自动处理依赖关系。
  • 长期支持:OpenJDK 提供 LTS 版本(如 8、11、17、21),适合生产环境稳定运行。

对于绝大多数开发场景,推荐优先安装 OpenJDK 11 或 17,它们是企业级应用的主流选择,且在未来几年内持续获得安全更新。

环境配置前的准备事项

  • 执行 sudo apt update 刷新软件源,避免安装到过期版本。
  • 如果存在旧版本 Java,先移除:sudo apt remove --purge openjdk-。
  • 确认系统位数(64 位环境):uname -m。

使用 apt 安装 OpenJDK(推荐新手)

这是最简洁的安装方式,无需手动配置复杂路径。

Ubuntu怎么配置Java环境?,Ubuntu安装Java的详细教程

  1. 查看可用版本:

    apt list | grep openjdk-
  2. 安装指定版本(以 OpenJDK 17 为例):

    sudo apt install openjdk-17-jdk
  3. 验证安装结果:

    java -version
    javac -version

顺利执行后,系统会自动完成环境变量配置,java 和 javac 命令即可全局调用。

使用 SDKMAN 管理多版本 JDK(推荐进阶用户)

当需要频繁切换 JDK 版本(如不同项目要求不同版本)时,SDKMAN 是最专业的解决方案。

  • 安装 SDKMAN:

    curl -s "https://get.sdkman.io" | bash
    source ~/.bashrc
  • 安装指定版本:

    sdk install java 17.0.9-tem
  • 切换版本:

    sdk use java 17.0.9-tem
  • 设置默认版本:

    sdk default java 17.0.9-tem

Android Studio 适配:降级到 JDK 11 的实战案例

在一次为 Android 项目配置原生编译环境时,我们遇到 Android Gradle Plugin(AGP)不兼容 JDK 17 的构建报错,报错信息明确提示要求使用 JDK 11,传统做法是卸载 17 再装 11,但这样会破坏同一台服务器上其他服务的依赖。

Ubuntu怎么配置Java环境?,Ubuntu安装Java的详细教程

专业解决方案是利用 SDKMAN 实现多版本共存:

  1. 同时保留 0.9-tem 和 0.21-tem 两个版本。
  2. 设置系统默认版本为 11:sdk default java 11.0.21-tem。
  3. 为特定项目创建 .sdkmanrc 文件,内容为 java=17.0.9-tem,该目录下自动切换至 17。
  4. 在酷番云云服务器上通过脚本自动化部署,确保每次新开终端自动载入对应 JDK 版本。

这种”按项目隔离 JDK 环境“的方式,使我们的多项目并行开发效率提升约 30%,且彻底规避了版本冲突问题,酷番云的高性能 SSD 存储与弹性扩容能力,为多版本 JDK 的快速切换提供了流畅的 I/O 支撑。

手动配置环境变量的关键细节(针对性方案)

如果你更喜欢手动控制,或安装的是解压版 JDK,核心是修改 ~/.bashrc 文件:

sudo nano ~/.bashrc

在文件末尾追加以下内容,注意将路径替换为你实际的 JDK 解压路径:

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

保存后执行

Ubuntu怎么配置Java环境?,Ubuntu安装Java的详细教程

source ~/.bashrc 使配置立即生效。

验证配置无误:执行 echo $JAVA_HOME,应输出你设置的路径;再运行 java -version 确认版本正确。

常见问题排查思路

  • 提示 Command 'java' not found:说明未成功安装或 PATH 未更新,先检查安装命令是否报错,再执行 source ~/.bashrc。
  • javac 可用但 java 不可用:通常是 PATH 配置不完整,只引入了 JRE 路径而遗漏了 JDK 路径。
  • JAVA_HOME 路径不存在:使用 sudo find /usr/lib/jvm -name "java" 查找真实安装位置,逐一排除环境变量引用错误。

Java 配置的两个高频疑问

apt 安装的 OpenJDK 与手动解压的 JDK 性能有差异吗?

两者本质都是同一份官方源码编译产物,性能无差异。但 apt 安装能获得系统级的安全补丁自动推送,手动解压版需要自行维护更新,更容易出现安全漏洞遗漏。

如何确认当前系统使用的到底是哪个 JDK 版本?

执行 which java 可查看命令所在路径;执行 readlink -f $(which java) 能解析软链接得到最终真实路径,结合 /usr/lib/jvm/ 目录下的列表,即可精确判断当前生效的版本。

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/753896.html

赞 (0)
上一篇 2026年8月31日 00:58
下一篇 2026年8月31日 01:01

相关推荐

  • Linux环境配置怎么做?,linux环境配置详细步骤教程

    Linux 环境配置的本质,是建立一套可持续演进的基础设施Linux 环境配置远远不止是“装好系统、敲几个命令”那么简单,一套科学、稳定、可复用的配置方案,直接决定业务的稳定性和运维效率,基于多年的实战经验,我认为 Linux 环境配置的核心结论是:以“最小权限 + 配置即代码 + 可审计”为原则,从用户体系……

    2026年9月6日
    0655
  • 安全数据库关键技术如何研究与实现?

    数据库安全的核心挑战与需求在数字化时代,数据库作为信息系统的核心组件,存储着企业、机构乃至个人的敏感数据,随着数据泄露、勒索攻击等安全事件频发,数据库安全问题已成为信息安全的重中之重,传统的数据库安全机制往往依赖简单的访问控制加密技术,难以应对内外部威胁、高级持续性攻击(APT)以及合规性要求等多重挑战,研究并……

    2025年11月24日
    03200
  • windows负载均衡配置怎么设置,windows负载均衡配置

    Windows负载均衡配置的核心在于构建高可用、高并发的应用架构,通过Nginx或HAProxy等反向代理软件配合Keepalived实现故障自动转移,是解决单点故障和提升系统吞吐量的关键手段,在Windows Server环境中,原生缺乏像Linux下那样轻量级且配置灵活的反向代理负载均衡方案,因此业界普遍采……

    2026年6月1日
    02062
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • 网络管理配置管理是什么,网络管理配置管理

    构建高可用云基础设施的核心引擎在数字化转型的深水区,网络管理与配置管理已不再是孤立的技术运维环节,而是保障业务连续性、提升资源利用率及确保合规性的核心战略支柱,核心结论在于:只有将网络拓扑的动态感知与设备配置的标准化管控深度融合,并引入自动化编排技术,企业才能从被动救火转向主动预防,实现IT基础设施的零信任安全……

    2026年6月11日
    01493

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(5条)

  • 大小6457的头像
    大小6457 2026年8月31日 11:41

    这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于使用的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!

    • 面robot415的头像
      面robot415 2026年8月31日 11:43

      @大小6457:这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于使用的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!

  • cool167boy的头像
    cool167boy 2026年8月31日 11:42

    这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于使用的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!

    • happy991的头像
      happy991 2026年8月31日 11:43

      @cool167boy:这篇文章的内容非常有价值,我从中学习到了很多新的知识和观点。作者的写作风格简洁明了,却又不失深度,让人读起来很舒服。特别是使用部分,给了我很多新的思路。感谢分享这么好的内容!

  • 帅cyber101的头像
    帅cyber101 2026年8月31日 11:44

    这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于使用的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!