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
    放在前面意味着系统会优先查找这个目录下的可执行文件。

  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

5分钟生成万字小说,人人都是小说家!

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

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

844

2023.06.15

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

742

2023.07.05

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

740

2023.07.31

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

397

2023.08.01

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

400

2023.08.02

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

446

2023.08.02

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

431

2023.08.02

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

16926

2023.08.03

C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

10

2026.01.23

热门下载

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

精品课程

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

共28课时 | 4.7万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.6万人学习

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

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