You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS 7系统下如何并行使用多个Java版本?

在CentOS 7上同时运行Java 8和Java 17应用

完全可以在CentOS 7上同时运行基于不同Java版本的应用,核心是让每个应用指向各自的Java安装路径,互不干扰,具体实现步骤如下:

1. 安装多个Java版本

安装Java 8

通过CentOS官方源直接安装OpenJDK 8:

yum install java-1.8.0-openjdk-devel -y

安装完成后,默认路径为/usr/lib/jvm/java-1.8.0-openjdk/

安装Java 17

如果官方源没有Java 17,可手动下载解压OpenJDK 17包:

  1. 下载对应版本的tar包
  2. 创建Java安装目录:
mkdir -p /usr/local/java
  1. 解压到目标目录:
tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local/java/

解压后路径类似/usr/local/java/jdk-17.x.x/,记好这个路径。

2. 用alternatives管理Java版本(可选,方便切换系统默认)

注册两个Java版本到系统alternatives,便于快速切换默认Java,但不影响应用指定独立版本:

  • 注册Java 8:
alternatives --install /usr/bin/java java /usr/lib/jvm/java-1.8.0-openjdk/bin/java 1
alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-1.8.0-openjdk/bin/javac 1
  • 注册Java 17:
alternatives --install /usr/bin/java java /usr/local/java/jdk-17.x.x/bin/java 2
alternatives --install /usr/bin/javac javac /usr/local/java/jdk-17.x.x/bin/javac 2
  • 切换默认版本时执行:
alternatives --config java

按提示输入对应编号即可切换系统全局默认的Java版本。

3. 让应用使用指定的Java版本

这是关键,确保每个应用调用各自版本的Java:

方法一:启动脚本中直接指定Java绝对路径

在应用的启动命令里,不用java命令,而是写对应Java版本的绝对路径:

  • Java 8应用启动示例:
/usr/lib/jvm/java-1.8.0-openjdk/bin/java -jar /path/to/your-java8-app.jar
  • Java 17应用启动示例:
/usr/local/java/jdk-17.x.x/bin/java -jar /path/to/your-java17-app.jar

方法二:通过systemd服务配置指定Java环境

如果用systemd管理应用服务,在服务配置文件中设置JAVA_HOME环境变量:
比如Java 8应用的/etc/systemd/system/java8-app.service:

[Unit]
Description=Java 8 Application Service
After=network.target

[Service]
Environment="JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk"
ExecStart=%JAVA_HOME%/bin/java -jar /path/to/your-java8-app.jar
User=appuser
Restart=on-failure

[Install]
WantedBy=multi-user.target

Java 17应用的/etc/systemd/system/java17-app.service:

[Unit]
Description=Java 17 Application Service
After=network.target

[Service]
Environment="JAVA_HOME=/usr/local/java/jdk-17.x.x"
ExecStart=%JAVA_HOME%/bin/java -jar /path/to/your-java17-app.jar
User=appuser
Restart=on-failure

[Install]
WantedBy=multi-user.target

配置完成后,重新加载systemd并启动服务:

systemctl daemon-reload
systemctl start java8-app.service
systemctl start java17-app.service

4. 验证版本正确性

查看应用进程使用的Java版本:

ps aux | grep java

或者直接执行对应Java路径的版本命令确认:

/usr/lib/jvm/java-1.8.0-openjdk/bin/java -version
/usr/local/java/jdk-17.x.x/bin/java -version

内容的提问来源于stack exchange,提问作者Domagoj Marosevic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 06:35:18