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如何给对象按照字符串属性进行排序

    java如何给对象按照字符串属性进行排序

    这篇文章主要介绍了java如何给对象按照字符串属性进行排序,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • java如何实现高并发场景下三级缓存的数据一致性

    java如何实现高并发场景下三级缓存的数据一致性

    这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-07-07
  • RabbitMQ中的延迟队列机制详解

    RabbitMQ中的延迟队列机制详解

    这篇文章主要介绍了RabbitMQ中的延迟队列机制详解,延时队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望,在指定时间到了以后或之前取出和处理,简单来说,延时队列就是用来存放需要在指定时间被处理的元素的队列,需要的朋友可以参考下
    2023-09-09
  • Java的ThreadContext类加载器的实现

    Java的ThreadContext类加载器的实现

    这篇文章主要介绍了Java的ThreadContext类加载器的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Java中消息队列任务的平滑关闭详解

    Java中消息队列任务的平滑关闭详解

    对于消息队列的监听,我们一般使用Java写一个独立的程序,在Linux服务器上运行。程序启动后,通过消息队列客户端接收消息,放入一个线程池进行异步处理,并发的快速处理。这篇文章主要给大家介绍了关于Java中消息队列任务的平滑关闭的相关资料,需要的朋友可以参考下。
    2017-11-11
  • Spring Boot的properties配置文件读取

    Spring Boot的properties配置文件读取

    这篇文章主要介绍了Spring Boot的properties配置文件读取,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • Java连接MySQL8.0 JDBC的详细步骤(IDEA版本)

    Java连接MySQL8.0 JDBC的详细步骤(IDEA版本)

    这篇文章主要介绍了Java连接MySQL8.0 JDBC的详细步骤(IDEA版本),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • SpringBoot数据库查询超时配置详解

    SpringBoot数据库查询超时配置详解

    这篇文章主要介绍了SpringBoot数据库查询超时配置,超时配置可以避免长时间占用数据库连接,提高系统的响应速度和吞吐量,还可以快速的反馈可以提升用户体验,避免用户因长时间等待而感到挫败,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2024-11-11
  • Java HTTP协议收发MQ 消息代码实例详解

    Java HTTP协议收发MQ 消息代码实例详解

    这篇文章主要通过实例代码为大家详细介绍了如何在Java 环境下使用 HTTP 协议收发 MQ 消息,需要的朋友可以参考下
    2017-04-04
  • SpringMVC 重定向参数RedirectAttributes实例

    SpringMVC 重定向参数RedirectAttributes实例

    这篇文章主要介绍了SpringMVC 重定向参数RedirectAttributes实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12

最新评论