Ubuntu环境下JDK环境变量配置过程详解(适用于 JDK 1.8)

 更新时间:2026年04月15日 08:19:26   作者:完颜振江  
在Ubuntu系统中设置Java环境变量是一个常见的任务,它对于Java应用的开发和运行至关重要,这篇文章主要介绍了Ubuntu环境下JDK环境变量配置的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

在 Linux 系统(如 Ubuntu 16.04/18.04/20.04/22.04)中正确配置 JDK 环境变量,是开发 Java 应用、运行 Maven/Gradle 项目或部署 Java 服务(如 Spring Boot、Jenkins、Zabbix Java Gateway 等)的前提。本文将以 jdk1.8.0_181 为例,详细说明如何通过 /etc/profile 或用户级配置文件永久设置 JAVA_HOMEPATH 等关键环境变量。

一、配置内容(以 JDK 安装在/usr/local/jdk1.8.0_181为例)

将以下内容添加到你的 shell 配置文件中(推荐使用 /etc/profile 以全局生效,或 ~/.bashrc 仅对当前用户生效):

# JDK 环境变量配置
export JAVA_HOME=/usr/local/jdk1.8.0_181
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

各变量说明:

变量名作用说明
JAVA_HOMEJDK 安装根目录,是大多数 Java 工具(如 Maven、Tomcat、Jenkins)识别 JDK 位置的关键变量。
JRE_HOMEJRE(Java 运行时环境)目录,部分旧应用依赖此变量。
CLASSPATHJava 类路径。开头的 . 表示当前目录,后续添加 JDK 和 JRE 的核心库。注意保留原有 $CLASSPATH
JAVA_PATH非标准变量,仅为方便组合 bin 路径(可选,也可直接写入 PATH)。
PATHjavajavacjps 等命令加入系统命令搜索路径,使终端可直接调用。

最佳实践CLASSPATH 通常可省略(现代 Java 应用多通过 -cp 或构建工具指定),但保留也无害。

二、配置步骤

方法 1:全局配置(推荐用于服务器)

# 编辑全局 profile 文件
sudo vim /etc/profile

将上述 JDK 配置追加到文件末尾,保存退出。

然后重新加载配置:

source /etc/profile

⚠️ 注意:/etc/profile 对所有用户生效,适用于运维部署场景(如 Jenkins 服务器、应用主机)。

方法 2:当前用户配置(适合开发机)

# 编辑当前用户的 bashrc
vim ~/.bashrc

同样追加配置内容,保存后执行:

source ~/.bashrc

💡 提示:若使用 zsh,则应修改 ~/.zshrc

三、验证配置是否生效

执行以下命令检查:

echo $JAVA_HOME
# 输出应为:/usr/local/jdk1.8.0_181
java -version
# 应显示:java version "1.8.0_181"
javac -version
# 应显示:javac 1.8.0_181
which java
# 应指向:/usr/local/jdk1.8.0_181/bin/java

若以上命令均输出正确,说明配置成功。

四、常见问题与注意事项

1.JDK 路径是否正确?

确保 /usr/local/jdk1.8.0_181 目录确实存在,且包含 bin/java 文件。若从 Oracle 官网下载的是 .tar.gz 包,通常需手动解压到该目录:

sudo tar -zxvf jdk-8u181-linux-x64.tar.gz -C /usr/local/

2.多版本 JDK 如何切换?

可使用 update-alternatives 管理多个 JDK:

sudo update-alternatives --install /usr/bin/java java /usr/local/jdk1.8.0_181/bin/java 1
sudo update-alternatives --install /usr/bin/javac javac /usr/local/jdk1.8.0_181/bin/javac 1
sudo update-alternatives --config java  # 手动切换

3.Docker 或 systemd 服务中不生效?

  • Docker:需在 Dockerfile 中显式设置环境变量。
  • systemd 服务:需在 .service 文件的 [Service] 段使用 Environment= 显式声明,因为 systemd 不加载 /etc/profile

五、总结

通过在 /etc/profile 或用户 shell 配置文件中正确设置 JAVA_HOMEPATH 等变量,可确保 Java 开发与运行环境在 Ubuntu 系统中稳定可用。该配置适用于 Jenkins 构建、Spring Boot 应用部署、Zabbix Java Gateway 启动等多种运维与开发场景。

📌 小技巧:在编写 Jenkins Pipeline、Shell 部署脚本或自动化工具时,建议显式指定 JAVA_HOME,避免因环境差异导致构建失败。

配置一次,受益长久!

到此这篇关于Ubuntu环境下JDK环境变量配置的文章就介绍到这了,更多相关Ubuntu下JDK环境变量配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • Java Collection集合iterator方法解析

    Java Collection集合iterator方法解析

    这篇文章主要介绍了Java Collection集合iterator方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Springboot项目启动找不到启动类的解决

    Springboot项目启动找不到启动类的解决

    这篇文章主要介绍了Springboot项目启动找不到启动类的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • 一文详解Java如何实现将PowerPoint转换为HTML

    一文详解Java如何实现将PowerPoint转换为HTML

    在日常开发和业务场景中,我们经常会遇到将PowerPoint(PPT)演示文稿转换为HTML的需求,本文将深入探讨如何使用Java将PowerPoint文档转换为HTML,包括整体转换和指定幻灯片转换两种场景,希望对大家有所帮助
    2025-12-12
  • Spring Cloud Gateway实现零拷贝参数校验的完整指南

    Spring Cloud Gateway实现零拷贝参数校验的完整指南

    本文将深入探讨在 Spring Cloud Gateway 中实现零拷贝参数校验的完整方案,从问题背景、设计思路到具体实现,提供可落地的实践指导,需要的朋友可以参考下
    2026-04-04
  • Java向上向下转型详解

    Java向上向下转型详解

    这篇文章主要为大家详细介绍了Java向上向下转型,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • Java异步编程之Callbacks与Futures模型详解

    Java异步编程之Callbacks与Futures模型详解

    这篇文章主要为大家详细介绍了Java异步编程中Callbacks与Futures模型的使用,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-03-03
  • Java集合框架超详细小结

    Java集合框架超详细小结

    Java中提供的一种容器,可以用来存储多个数据。java集合大致可以分为Set,List,Queue和Map四种体系。这篇文章主要介绍了Java集合框架超详细小结,需要的朋友可以参考下
    2021-08-08
  • 详解Java中的pinpoint1.8.5安装及使用指南

    详解Java中的pinpoint1.8.5安装及使用指南

    pinpoint是开源在github上的一款APM监控工具,它是用Java编写的,用于大规模分布式系统监控。这篇文章主要介绍了pinpoint1.8.5安装及使用指南,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • Java实现List去重的五种方法详解

    Java实现List去重的五种方法详解

    这篇文章主要为大家详细介绍了Java中List去重的5种方法,文中的示例代码讲解详细,具有一定的学习和参考价值,需要的小伙伴可以了解一下
    2022-10-10
  • 如何在mapper文件中使用in("str1","str2")

    如何在mapper文件中使用in("str1","str2")

    这篇文章主要介绍了如何在mapper文件中使用in("str1","str2"),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01

最新评论