Wsl Java

安装多个 Java 版本

使用 apt/yum 官方仓库(推荐)

以 Ubuntu 为例:

sudo apt update
sudo apt install openjdk-8-jdk openjdk-11-jdk openjdk-17-jdk -y

安装后,你的系统会有多个版本,例如:

/usr/lib/jvm/java-8-openjdk-amd64
/usr/lib/jvm/java-11-openjdk-amd64
/usr/lib/jvm/java-17-openjdk-amd64

1、使用 update-alternatives(官方推荐切换方案)

update-alternatives 是 Ubuntu/Debian 下管理多版本工具的标准方式。

添加各版本:

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-8-openjdk-amd64/bin/java 1080
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1110
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1170

交互式切换:

sudo update-alternatives --config java

输出示例:

There are 3 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                             Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-17-openjdk-amd64/bin/java      1170      auto mode
  1            /usr/lib/jvm/java-8-openjdk-amd64/bin/java       1080      manual mode
  2            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1110      manual mode
  3            /usr/lib/jvm/java-17-openjdk-amd64/bin/java      1170      manual mode

输入编号即可切换。

同样操作也可以用于 javac

sudo update-alternatives --config javac

2、为项目设置独立 Java 版本

有时你希望不同项目使用不同 Java

# 在项目 A 下使用 Java 8
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
mvn clean install

# 在项目 B 下使用 Java 17
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
gradle build

或写成脚本 run_with_java8.sh

#!/bin/bash
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
java -version
mvn clean install

验证当前配置

echo $JAVA_HOME
java -version
javac -version