在CentOS上安装Java 17并实现多版本共存的详细教程

 更新时间:2025年03月03日 09:50:45   作者:码农阿豪@新空间  
在现代软件开发中,Java 作为一种广泛使用的编程语言,其版本更新频繁,不同项目可能依赖不同版本的 Java 运行环境,CentOS 作为一款流行的 Linux 发行版,常被用于服务器部署和开发环境,本文将详细介绍如何在 CentOS 上安装 Java 17,并实现与现有 Java 8 的多版本共存

引言

在现代软件开发中,Java 作为一种广泛使用的编程语言,其版本更新频繁,不同项目可能依赖不同版本的 Java 运行环境。CentOS 作为一款流行的 Linux 发行版,常被用于服务器部署和开发环境。本文将详细介绍如何在 CentOS 上安装 Java 17,并实现与现有 Java 8 的多版本共存,确保不同项目能够顺利运行。

一、CentOS 系统简介

CentOS 是基于 Red Hat Enterprise Linux(RHEL)的开源操作系统,以其稳定性、安全性和兼容性而受到广泛欢迎。它适用于服务器环境,支持多种软件和服务的部署。

二、Java 17 的重要性

Java 17 是 Java 平台的一个长期支持(LTS)版本,引入了许多新特性和改进,如模式匹配、密封类和新的垃圾回收器等。这些特性使得 Java 17 成为开发高性能、现代化应用程序的理想选择。

三、安装 Java 17 的方法

在 CentOS 上安装 Java 17 有多种方法,包括使用 yum 包管理器、手动下载安装包等。以下是详细步骤:

(一)更新系统软件包

在安装 Java 17 之前,建议先更新系统软件包,以确保系统的稳定性和兼容性:

sudo yum update -y

(二)安装 Java 17

CentOS 默认的 yum 仓库中可能不包含 Java 17,因此需要启用额外的仓库。以下是安装步骤:

1. 启用 EPEL 仓库

sudo yum install -y epel-release

2. 安装 OpenJDK 17

sudo yum install -y java-17-openjdk-devel

如果 yum 提示找不到 java-17-openjdk-devel 包,可以尝试手动下载并安装。

(三)手动下载并安装 OpenJDK 17

如果 yum 无法找到 Java 17 的包,可以手动下载并安装 OpenJDK 17。

1. 下载 OpenJDK 17

从 AdoptOpenJDK 或其他可信源下载 OpenJDK 17 的 tar.gz 文件:

wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.8.1+1/OpenJDK17U-jdk_x64_linux_hotspot_17.0.8.1_1.tar.gz

2. 解压到指定目录

将下载的文件解压到 /usr/local/ 或其他适合的目录:

sudo tar xzf OpenJDK17U-jdk_x64_linux_hotspot_17.0.8.1_1.tar.gz -C /usr/local/

3. 配置环境变量

编辑 /etc/profile 文件,添加以下内容:

export JAVA_HOME=/usr/local/jdk-17.0.8.1+1
export PATH=$JAVA_HOME/bin:$PATH

然后使环境变量生效:

source /etc/profile

4. 验证安装

检查 Java 版本是否正确:

java -version

输出应显示 OpenJDK 17 的版本信息。

四、配置多版本 Java 环境

在 CentOS 上,可以使用 update-alternatives 工具来管理多个 Java 版本,并根据需要切换。

(一)添加 Java 版本到 update-alternatives

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk/bin/java 1
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-17-openjdk/bin/javac 1

(二)切换 Java 版本

sudo update-alternatives --config java

在弹出的菜单中选择对应的 Java 版本编号。

(三)为特定项目设置 Java 版本

如果你不想全局切换 Java 版本,可以在项目中指定 Java 版本。

Maven

在 pom.xml 中指定 Java 版本:

<properties>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
</properties>

Gradle

在 build.gradle 中指定 Java 版本:

sourceCompatibility = '17'
targetCompatibility = '17'

环境变量

为特定项目设置 JAVA_HOME

export JAVA_HOME=/usr/local/jdk-17
export PATH=$JAVA_HOME/bin:$PATH

五、常见问题及解决方法

在安装和配置 Java 17 的过程中,可能会遇到一些常见问题。以下是解决方案:

(一)yum 提示找不到 Java 17 包

如果 yum 提示找不到 java-17-openjdk-devel 包,可以尝试手动下载并安装。

(二)update-alternatives 配置失败

如果 update-alternatives 配置失败,可以手动编辑 /etc/profile 文件,设置 JAVA_HOME 和 PATH

(三)Java 版本切换后无法生效

如果切换 Java 版本后无法生效,可以尝试重启系统或重新加载环境变量:

source /etc/profile

六、总结

在 CentOS 上安装 Java 17 并实现多版本共存是一个相对简单的过程。通过使用 yum 包管理器或手动下载安装包,可以轻松安装 Java 17。同时,利用 update-alternatives 工具,可以方便地在不同版本的 Java 之间切换,满足不同项目的需求。

以上就是在CentOS上安装Java 17并实现多版本共存的详细教程的详细内容,更多关于CentOS安装Java 17并多版本共存的资料请关注脚本之家其它相关文章!

相关文章

  • Java中的CountDownLatch原理深入解析

    Java中的CountDownLatch原理深入解析

    这篇文章主要介绍了Java中的CountDownLatch原理深入解析,CountDownLatch是多线程控制的一种同步工具类,它被称为门阀、 计数器或者闭锁,这个工具经常用来用来协调多个线程之间的同步,或者说起到线程之间的通信,需要的朋友可以参考下
    2024-01-01
  • Java实现读取CSV文件并将数据放入对象

    Java实现读取CSV文件并将数据放入对象

    CSV文件是一种常见的数据存储格式,广泛应用于数据交换,日志记录和表格数据处理,在Java开发中,读取CSV文件并将数据映射到对象中是常见的需求,本文将详细介绍几种常见方法,有需要的可以了解下
    2025-06-06
  • 详解java注解相关知识

    详解java注解相关知识

    今天给大家带来的是关于Java的相关知识,文章围绕着java注解的使用展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • SpringMVC 响应数据和结果视图从环境搭建到实战全解析

    SpringMVC 响应数据和结果视图从环境搭建到实战全解析

    SpringMVC中,Controller方法的返回值决定了响应方式,本文详细讲解了SpringMVC的开发环境搭建、Controller方法返回值分类、转发与重定向机制,以及JSON异步交互的实现,本文介绍SpringMVC 响应数据和结果视图从环境搭建到实战全解析,感兴趣的朋友跟随小编一起看看吧
    2025-11-11
  • Java使用EasyExcel实现高效的Excel读写操作

    Java使用EasyExcel实现高效的Excel读写操作

    在日常开发中,Excel 文件的读写操作是一个常见的需求,EasyExcel 是阿里巴巴开源的一个高性能、易用的 Excel 读写库,可以大幅提高处理 Excel 文件的效率,本篇博客将从 EasyExcel 的基本概念、优势、安装、读写操作以及高级用法展开,需要的朋友可以参考下
    2024-12-12
  • 解读Java报错输出的信息究竟是什么

    解读Java报错输出的信息究竟是什么

    Java报错输出的信息主要包括异常的主要描述信息和当前线程的栈帧信息,栈帧是虚拟机栈的基本存储单元,主要由局部变量表、操作数栈和帧数据三部分组成,局部变量表用于存放方法的参数和局部变量,操作数栈用于保存计算过程中产生的中间结果
    2024-12-12
  • Idea配置热部署的详细教程

    Idea配置热部署的详细教程

    这篇文章主要介绍了Idea配置热部署的详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • JVM原理之类加载的全过程

    JVM原理之类加载的全过程

    文章详细介绍了Java类加载过程,包括加载、链接、初始化、使用和卸载五个阶段,并解释了符号引用和直接引用的区别,以及类变量和实例变量的区别,此外,还介绍了Class.forName()方法的作用和使用场景
    2025-01-01
  • Java用数组实现循环队列的示例

    Java用数组实现循环队列的示例

    下面小编就为大家带来一篇Java用数组实现循环队列的示例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Java应用开源框架实现简易web搜索引擎

    Java应用开源框架实现简易web搜索引擎

    本篇文章主要介绍了Java应用开源框架实现简易web搜索引擎,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11

最新评论