在 CentOS 系统上使用安装并用alternatives切换 JDK17(与 JDK8 共存指南)

⚠问题

最近在工作中需要同时使用 JDK8 和 JDK17,为了方便切换,我在 CentOS 系统上完成了 JDK17 的安装和配置。整理成文,希望对需要多版本 Java 共存的朋友有帮助。

  1. 首先查看服务器目前的java版本
  1. 使用alternatives 查看java信息

👉 解决方案

1. 创建下载目录下载 JDK17

plain 复制代码
# 创建软件下载目录
mkdir /usr/local/data
# 进入软件下载目录
cd /usr/local/data
# 下载jdk17 
wget https://download.oracle.com/java/17/archive/jdk-17.0.12_linux-x64_bin.tar.gz

2.解压并注册JDK17

  1. 首先,将下载 Oracle 官方 JDK17 安装包( 格式)解压到 /opt</font> 目录:
shell 复制代码
sudo tar -xzf jdk-17.0.12_linux-x64_bin.tar.gz -C /opt
  1. 解压后系统会生成类似目录:/opt/jdk-17.0.12

为了简化路径,也方便后续配置,我建议重命名为:

shell 复制代码
sudo mv /opt/jdk-17.0.12 /opt/jdk17

这样之后的路径就统一为 /opt/jdk17

  1. CentOS 的 alternatives 可以轻松管理同一类型的多版本软件。我们先把 JDK17 注册进去
shell 复制代码
# 注册 java 命令
sudo alternatives --install /usr/bin/java java /opt/jdk17/bin/java 200

# 注册 javac 命令
sudo alternatives --install /usr/bin/javac javac /opt/jdk17/bin/javac 200

数字 200 是优先级,数值越大优先级越高,通常高版本设置为更高优先级。


3. 切换到 JDK17

注册完成后,可以通过以下命令切换 Java 版本:

shell 复制代码
sudo alternatives --config java
sudo alternatives --config javac

执行后会看到类似:

shell 复制代码
选择 java 的版本:
  1) /usr/lib/jvm/java-1.8.0/bin/java
* 2) /opt/jdk17/bin/java

输入对应编号即可切换到 JDK17。

✅ 这样你就可以在 JDK8 和 JDK17 之间自由切换了。


4. 配置 JAVA_HOME(推荐)

为了方便其他软件引用 Java,建议配置环境变量:

shell 复制代码
sudo tee /etc/profile.d/jdk17.sh << 'EOF'
export JAVA_HOME=/opt/jdk17
export PATH=$JAVA_HOME/bin:$PATH
EOF

让配置立即生效:

shell 复制代码
source /etc/profile.d/jdk17.sh

现在 $JAVA_HOME 就指向了 JDK17。


5. 验证安装

验证 Java 版本:

shell 复制代码
java -version
javac -version
echo $JAVA_HOME

输出应类似:

shell 复制代码
java version "17.0.12" 2023-07-18 LTS
javac 17.0.12
JAVA_HOME=/opt/jdk17

✅ 安装成功!


😃小结

通过以上步骤,我在 CentOS 系统上实现了:

  • JDK8 JDK17 自由切换 (通过 alternatives
  • JAVA_HOME 环境变量正确配置
  • 系统多个 JDK 共存,无冲突

这套方法非常适合开发者在不同项目中切换 Java 版本,推荐收藏。

🧩切换回1.8

🔷 再切换 Java 运行环境回到 1.8

shell 复制代码
sudo alternatives --config java

你会看到类似:

shell 复制代码
有 2 个程序提供 'java'。

  1 /usr/lib/jvm/java-1.8.0-openjdk.../bin/java
* 2 /opt/jdk17/bin/java

👉 输入 1(JDK1.8) 然后回车。


🔷 切换编译器(javac)到 1.8

shell 复制代码
sudo alternatives --config javac

同样选择 JDK1.8 对应的编号。


🔷 验证是否已成功切换

shell 复制代码
java -version
javac -version

正确输出应类似:

shell 复制代码
java version "1.8.0_412"
javac 1.8.0_412

❗如果看不到 1.8 选项?

运行这个命令看看 JDK8 路径:

shell 复制代码
ls /usr/lib/jvm/

需要重新注册 JDK8 到 alternatives。

相关推荐
听风吟丶1 小时前
Java 响应式编程实战:Spring WebFlux+Reactor 构建高并发电商系统
java·开发语言·spring
柔情的菜刀1 小时前
基于 RK3588 的图像拼接系统-图像采集
linux·嵌入式硬件
遇到困难睡大觉哈哈1 小时前
Harmony os——ArkTS 语言笔记(七):注解(Annotation)实战理解
java·笔记·ubuntu·harmonyos·鸿蒙
数新网络1 小时前
CyberAI多模态数据平台焕新升级!七大核心功能解锁高效管理新体验
java·网络·人工智能
可爱又迷人的反派角色“yang”1 小时前
Mysql数据库(一)
运维·服务器·前端·网络·数据库·mysql·nginx
Highcharts.js1 小时前
Renko Charts|金融图表之“砖形图”
java·前端·javascript·金融·highcharts·砖型图·砖形图
zhaodiandiandian1 小时前
工业智能化:从自动化到自主化的升级之路
运维·人工智能·自动化
A达峰绮1 小时前
从“运维技术”到“一键编排”,与Kurator在分布式云原生开源项目的实战经验
运维·分布式·云原生
Lynnxiaowen1 小时前
今天我们开始学习Docker概述与安装
linux·学习·docker·容器·云计算