首页 > 运维 > CentOS > 正文

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

雪夜
发布: 2025-08-31 08:43:01
原创
282人浏览过
在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
    登录后复制
    放在前面意味着系统会优先查找这个目录下的可执行文件。

  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/
登录后复制
是规范的选择?

帮衣帮-AI服装设计
帮衣帮-AI服装设计

AI服装设计神器,AI生成印花、虚拟试衣、面料替换

帮衣帮-AI服装设计 106
查看详情 帮衣帮-AI服装设计
  • 系统级生效:在这个目录下创建的脚本会在所有用户登录时自动执行,确保所有用户都能访问到配置好的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
登录后复制
,通常会是更轻松、更符合直觉的选择。我个人更倾向于软链接的方式,它在系统级和用户级之间找到了一个很好的平衡点。

以上就是CentOS下怎么安装JDK_CentOS安装与配置Java开发环境教程的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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