0

0

CentOS下怎么安装JDK_CentOS安装与配置Java开发环境教程

雪夜

雪夜

发布时间:2025-08-31 08:43:01

|

308人浏览过

|

来源于php中文网

原创

在centos上安装jdk,推荐手动下载openjdk lts版本(如17或21)的.tar.gz包,解压至/opt目录并创建软链接,通过配置/etc/profile.d/java.sh设置java_home、path和classpath环境变量,最后验证java -version和echo $java_home确认安装成功;版本管理推荐使用软链接切换或alternatives命令。

centos下怎么安装jdk_centos安装与配置java开发环境教程

在CentOS系统上安装和配置Java开发环境(JDK),核心步骤通常包括下载合适的JDK包、解压到指定目录,然后配置系统环境变量。这个过程并不复杂,但一些细节处理得当,能让你的开发环境更稳定、更易于管理。对于大多数开发者来说,手动下载并配置一个特定版本的JDK,比如OpenJDK的某个LTS版本,是兼顾灵活性和稳定性的最佳实践。

解决方案

要在CentOS上搭建Java开发环境,我通常会选择手动下载JDK压缩包(

.tar.gz
文件),而不是直接使用
yum
安装系统自带的OpenJDK。原因很简单,手动安装能更好地控制JDK版本,避免系统更新带来的意外,也方便在不同项目间切换JDK版本。

以下是我通常的操作流程:

  1. 选择并下载JDK: 首先,你需要决定使用哪个JDK版本。对于生产环境和长期项目,我倾向于选择LTS(长期支持)版本,比如OpenJDK 11、17或21。你可以从Adoptium (Temurin)、Oracle OpenJDK或者Red Hat OpenJDK等官方或可信赖的发行版网站下载对应的Linux x64

    .tar.gz
    压缩包。例如,我会去Adoptium下载最新的Temurin 17 LTS。

  2. 上传并解压JDK: 将下载好的JDK压缩包上传到你的CentOS服务器。我习惯将其放在

    /opt
    目录下,这是一个用于存放可选应用软件的好地方。

    # 假设你已经将jdk-17.0.x_linux-x64_bin.tar.gz上传到 /tmp 目录
    sudo mv /tmp/jdk-17.0.x_linux-x64_bin.tar.gz /opt/
    cd /opt
    sudo tar -zxvf jdk-17.0.x_linux-x64_bin.tar.gz
    # 解压后通常会生成一个类似 jdk-17.0.x 的目录
    sudo rm jdk-17.0.x_linux-x64_bin.tar.gz # 清理安装包

    为了方便管理,我有时会创建一个软链接,指向这个具体的JDK目录,这样以后升级JDK时,只需要更新软链接即可,而不用修改环境变量。

    立即学习Java免费学习笔记(深入)”;

    sudo ln -s /opt/jdk-17.0.x /opt/java

    这样,我的

    JAVA_HOME
    就可以指向
    /opt/java
    了。

  3. 配置环境变量: 这是最关键的一步。为了让系统知道Java在哪里,你需要设置

    JAVA_HOME
    PATH
    环境变量。我通常会在
    /etc/profile.d/
    目录下创建一个新的脚本文件,比如
    java.sh
    ,这样系统启动时会自动加载,而且权限管理也更清晰。

    sudo vi /etc/profile.d/java.sh

    java.sh
    中添加以下内容:

    export JAVA_HOME=/opt/java # 替换为你的JDK实际路径或软链接
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

    保存并退出。然后,让这些修改立即生效:

    source /etc/profile.d/java.sh

    或者,你也可以选择在当前用户的主目录下的

    .bashrc
    .bash_profile
    中添加这些变量,这只会对当前用户生效。

  4. 验证安装: 最后,确认JDK是否正确安装并配置。

    java -version
    javac -version
    echo $JAVA_HOME

    如果能正确显示Java版本信息,并且

    JAVA_HOME
    输出你设置的路径,那么恭喜你,Java开发环境已经准备就绪了。

CentOS上安装JDK,我应该选择哪个版本?OpenJDK和Oracle JDK有什么区别?

选择JDK版本时,我个人会优先考虑项目的实际需求和社区支持。当前主流的JDK版本通常是LTS版本,比如JDK 8、11、17和21。对于新项目,我强烈推荐使用JDK 17或21,它们带来了许多性能优化和新特性,能让你的代码更现代、更高效。如果你的项目需要兼容旧系统或依赖库,JDK 8或11可能是更好的选择。

至于OpenJDK和Oracle JDK的区别,这其实是一个老生常谈的话题了,但每次讨论都很有意思。简单来说:

  • OpenJDK:这是一个开源项目,是Java平台的参考实现。它完全免费,可以自由使用和分发。许多公司和社区都基于OpenJDK提供自己的发行版,比如Adoptium (Temurin)、Red Hat OpenJDK、Amazon Corretto等。这些发行版通常会包含一些额外的补丁、性能优化和长期支持。对于绝大多数开发者和企业来说,OpenJDK发行版是完全足够且推荐的选择。
  • Oracle JDK:这是Oracle公司官方维护和发布的JDK版本。从JDK 11开始,Oracle JDK的许可模式发生了变化,对于商业用途可能需要付费订阅。当然,Oracle也提供了免费的OpenJDK版本,但通常其商业支持和某些专有特性(比如Java Flight Recorder的一些高级功能)会捆绑在付费产品中。

我的观点是,除非你有非常特殊的理由(比如公司有Oracle的全面技术栈支持,或者需要Oracle JDK的某些独有特性),否则选择一个信誉良好的OpenJDK发行版是更明智、更经济的选择。它们在功能上与Oracle JDK几乎没有差异,性能也相差无几,而且社区活跃,更新及时。

配置JAVA_HOME和PATH环境变量,究竟怎么做才最规范?

规范地配置

JAVA_HOME
PATH
环境变量,不仅能确保Java命令在任何位置都能被识别,还能避免不同Java应用之间可能出现的版本冲突。我个人认为,最规范的做法是利用
/etc/profile.d/
目录,因为它提供了系统级的统一配置,并且易于管理。

  1. JAVA_HOME
    : 这个变量指向你的JDK安装根目录。例如,如果你把JDK解压到了
    /opt/jdk-17.0.x
    ,那么
    JAVA_HOME
    就应该设置为
    /opt/jdk-17.0.x
    。如果像我前面建议的,创建了一个软链接
    /opt/java
    指向实际的JDK目录,那么
    JAVA_HOME
    就设置为
    /opt/java
    。这样做的好处是,许多Java应用程序和构建工具(如Maven、Gradle)都会依赖
    JAVA_HOME
    来定位Java运行时。

  2. PATH
    PATH
    环境变量告诉操作系统在哪些目录中查找可执行文件。你需要将
    $JAVA_HOME/bin
    添加到
    PATH
    中,这样你就可以直接在命令行中运行
    java
    javac
    等命令,而不需要输入它们的完整路径。

    export PATH=$JAVA_HOME/bin:$PATH

    这里的

    $PATH
    是原有的
    PATH
    值,
    $JAVA_HOME/bin
    放在前面意味着系统会优先查找这个目录下的可执行文件。

    百宝箱
    百宝箱

    百宝箱是支付宝推出的一站式AI原生应用开发平台,无需任何代码基础,只需三步即可完成AI应用的创建与发布。

    下载
  3. CLASSPATH
    (可选但推荐):
    CLASSPATH
    用于指定Java虚拟机(JVM)在查找类文件时需要搜索的路径。虽然现代Java开发工具(如Maven、Gradle)通常会自行管理类路径,但为了完整性,我还是会将其配置上,指向JDK的
    lib
    目录下的
    dt.jar
    tools.jar
    ,以及当前目录
    .

    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

为什么

/etc/profile.d/
是规范的选择?

  • 系统级生效:在这个目录下创建的脚本会在所有用户登录时自动执行,确保所有用户都能访问到配置好的Java环境。
  • 模块化管理:每个服务或应用的环境变量可以独立存放在一个脚本文件中,便于查看、修改和删除,避免了修改
    /etc/profile
    这个核心文件的风险。
  • 权限清晰:这些文件通常由root用户创建和管理,符合系统管理规范。

当然,如果你只是为单个用户配置,那么修改用户主目录下的

.bashrc
.bash_profile
也是完全可以的。但对于服务器环境,我更推荐
/etc/profile.d/

CentOS系统里有多个JDK版本,我该如何管理和切换?

在开发过程中,遇到需要切换不同JDK版本的情况简直是家常便饭。比如,一个老项目需要JDK 8,而新项目则基于JDK 17。CentOS提供了

alternatives
命令来管理系统中的不同版本软件,但对我来说,有时候直接调整
JAVA_HOME
反而更灵活。

方法一:使用

alternatives
命令(系统级管理)

alternatives
是一个强大的工具,它允许你注册多个版本的软件,并设置一个默认的“提供者”。

  1. 注册新的JDK版本: 假设你已经安装了JDK 8和JDK 17,并且它们分别在

    /opt/java8
    /opt/java17

    sudo alternatives --install /usr/bin/java java /opt/java8/bin/java 1
    sudo alternatives --install /usr/bin/javac javac /opt/java8/bin/javac 1
    sudo alternatives --install /usr/bin/jar jar /opt/java8/bin/jar 1
    # ... 对其他Java工具(如javadoc, jconsole等)重复此操作
    
    sudo alternatives --install /usr/bin/java java /opt/java17/bin/java 2
    sudo alternatives --install /usr/bin/javac javac /opt/java17/bin/javac 2
    sudo alternatives --install /usr/bin/jar jar /opt/java17/bin/jar 2
    # 注意后面的数字是优先级,数字越大优先级越高

    这里的

    --install
    参数后面跟着:

    • /usr/bin/java
      :这是你希望创建的符号链接的路径。
    • java
      :这是符号链接的名称。
    • /opt/java8/bin/java
      :这是实际的可执行文件路径。
    • 1
      :这是一个优先级数字。
  2. 切换JDK版本

    sudo alternatives --config java

    系统会列出所有已注册的Java版本,并让你选择一个数字来切换。

    There are 2 programs which provide 'java'.
    
      Selection    Command
    -----------------------------------------------
       1           /opt/java8/bin/java
    *+ 2           /opt/java17/bin/java
    
    Enter to keep the current selection[+], or type selection number:

    输入你想要的版本对应的数字,回车即可。

方法二:通过调整

JAVA_HOME
PATH
(更灵活,我常用)

对于个人开发环境,我发现直接修改

JAVA_HOME
环境变量通常更直接、更灵活,尤其是在使用版本管理工具(如
asdf
sdkman
)时。

如果你没有使用

alternatives
,或者觉得它有点重,你可以:

  1. /etc/profile.d/java.sh
    中修改
    JAVA_HOME
    : 直接编辑之前创建的
    java.sh
    文件,将
    export JAVA_HOME=/opt/java
    中的
    /opt/java
    修改为
    /opt/java8
    /opt/java17
    ,然后
    source /etc/profile.d/java.sh
    。这种方法需要root权限,并且会影响所有用户。

  2. 使用软链接切换(我的推荐): 如果你之前创建了

    /opt/java
    这个软链接,那么切换起来就非常方便了。

    # 切换到JDK 8
    sudo rm /opt/java
    sudo ln -s /opt/java8 /opt/java
    source /etc/profile.d/java.sh # 重新加载环境变量
    
    # 切换到JDK 17
    sudo rm /opt/java
    sudo ln -s /opt/java17 /opt/java
    source /etc/profile.d/java.sh # 重新加载环境变量

    这种方式既直观又高效,避免了频繁修改配置文件,而且

    JAVA_HOME
    始终指向
    /opt/java
    ,对应用程序是透明的。

  3. 用户级切换: 如果你只希望在当前用户下切换JDK,可以在

    ~/.bashrc
    ~/.bash_profile
    中设置
    JAVA_HOME

    # 在~/.bashrc中添加或修改
    export JAVA_HOME=/opt/java17
    export PATH=$JAVA_HOME/bin:$PATH

    然后

    source ~/.bashrc
    。这种方法的好处是互不影响,每个用户可以有自己的Java环境。

总的来说,

alternatives
适合系统管理员在多用户环境下管理系统默认的Java版本。而对于单个开发者,特别是需要频繁切换的场景,通过软链接或者直接在用户配置文件中调整
JAVA_HOME
,通常会是更轻松、更符合直觉的选择。我个人更倾向于软链接的方式,它在系统级和用户级之间找到了一个很好的平衡点。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Java Maven专题
Java Maven专题

本专题聚焦 Java 主流构建工具 Maven 的学习与应用,系统讲解项目结构、依赖管理、插件使用、生命周期与多模块项目配置。通过企业管理系统、Web 应用与微服务项目实战,帮助学员全面掌握 Maven 在 Java 项目构建与团队协作中的核心技能。

0

2025.09.15

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

443

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

605

2023.08.10

oracle清空表数据
oracle清空表数据

当表中的数据不需要时,则应该删除该数据并释放所占用的空间。本专题为大家提供oracle清空表数据的相关文章,帮助大家解决该问题。

271

2023.08.16

Oracle中declare的使用
Oracle中declare的使用

Oracle DECLARE语句是PL/SQL编程语言中用于声明变量、常量、游标或异常的关键字。它的主要作用是在程序中定义这些对象,以便在后续的代码中使用。DECLARE语句的语法简单明了,可以根据需要声明多个对象。通过使用这些声明的对象,可以进行各种操作,如计算、查询数据库、处理异常等 。

221

2023.09.15

oracle怎么分页
oracle怎么分页

实现分页的步骤:1、使用ROWNUM进行分页查询;2、在执行查询之前进行设置分页参数;3、使用"COUNT(*)"函数来获取总行数,并使用"CEIL"函数来向上取整计算总页数;4、在外部查询中使用"WHERE"子句来筛选出特定的行号范围,以实现分页查询。想了解更多oracle怎么分页的文章,可以来阅读本专题先的文章。

245

2023.09.18

Oracle查看表操作历史记录
Oracle查看表操作历史记录

查看操作历史记录的方法:1、使用Oracle内置的审计功能,可以记录数据库中发生的各种操作,包括登录、DDL语句、DML语句等;2、使用Oracle日志文件,其中包含了数据库中发生的各种操作,可以通过查看日志文件来获取操作历史记录;3、使用Oracle的Flashback功能,可以查看数据库在某个时间点的操作历史记录;4、使用第三方工具等。本专题还提供其他查看表操作的文章,大家可以免费阅读。

463

2023.09.19

Oracle中RAC的用法
Oracle中RAC的用法

Oracle中RAC的用法:1、通过在多个服务器上运行数据库实例来提供高可用性;2、允许在需要时增加或减少节点数量;3、通过将工作负载分布到多个节点上来实现负载均衡;4、使用共享存储来实现多个节点之间的数据共享;5、允许多个节点同时处理数据库请求,从而实现并行处理;6、提供了透明故障切换功能;7、使用了一些技术来确保数据的一致性;8、提供了管理工具来简化RAC环境的管理和维护。本专题还提供RAC相关的其他文章,大家可以免费阅读。

450

2023.09.19

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Rust 教程
Rust 教程

共28课时 | 6.8万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号