1. 下载 JDK
# JDK 8
需要手动下载 https://download.oracle.com/java/8/archive/jdk-8u401-linux-x64.tar.gz
# JDK 17
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
# JDK 21
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz
2. 解压 JDK
# JDK 8
sudo tar -xzvf jdk-8u401-linux-x64.tar.gz -C /usr/lib/jvm/
sudo mv /usr/lib/jvm/jdk1.8.0_401 /usr/lib/jvm/jdk-8
# JDK 17
sudo tar -xzvf jdk-17_linux-x64_bin.tar.gz -C /usr/lib/jvm/
sudo mv /usr/lib/jvm/jdk-17.0 /usr/lib/jvm/jdk-17
# JDK 21
sudo tar -xzvf jdk-21_linux-x64_bin.tar.gz -C /usr/lib/jvm/
sudo mv /usr/lib/jvm/jdk-21.0 /usr/lib/jvm/jdk-21
3. 配置系统环境
使用update-alternatives
设置和管理不同版本的 Java 命令。
# JDK 8
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-8/bin/java 1
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-8/bin/javac 1
# JDK 17
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-17/bin/java 2
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-17/bin/javac 2
# JDK 21
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-21/bin/java 3
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-21/bin/javac 3
4. 项目配置
为每个项目设置独立的JAVA_HOME
。在每个项目的启动脚本中定义使用的 JDK 版本。
Project using JDK 8:
export JAVA_HOME=/usr/lib/jvm/jdk-8
export PATH=$JAVA_HOME/bin:$PATH
Project using JDK 17:
export JAVA_HOME=/usr/lib/jvm/jdk-17
export PATH=$JAVA_HOME/bin:$PATH
Project using JDK 21:
export JAVA_HOME=/usr/lib/jvm/jdk-21
export PATH=$JAVA_HOME/bin:$PATH
5. 异常情况
如果使用update-alternatives切换了jdk版本,但是查看jdk版本没改变,可以使用数字切换
[root@iZe2o01l0xpx6bubb3e5b6Z soft]# update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-17.0.12/bin/java 1
[root@iZe2o01l0xpx6bubb3e5b6Z soft]# java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)
[root@iZe2o01l0xpx6bubb3e5b6Z soft]# update-alternatives --config java
There are 3 programs which provide 'java'.
Selection Command
-----------------------------------------------
*+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-1.h5.ky10.x86_64/jre/bin/java)
2 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.6.10-4.ky10.ky10.x86_64/bin/java)
3 /usr/lib/jvm/jdk-17.0.12/bin/java
Enter to keep the current selection[+], or type selection number: 3
[root@iZe2o01l0xpx6bubb3e5b6Z soft]# java -version
java version "17.0.12" 2024-07-16 LTS
Java(TM) SE Runtime Environment (build 17.0.12+8-LTS-286)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.12+8-LTS-286, mixed mode, sharing)