📘
UbuntuでマルチJavaバージョン(Temurin)の切替
前描き
現在LTSのJavaバージョンでは三つがあります。
- 11(2022年12月の現在のメイジャーバージョン)
- 8
- 17
案件によりますが、使用するバージョンが違うかも知れません。コマンドラインからビルドする時、JAVA_HOMEを指定しての実施ではないかと思います。
しかし、手でコマンドを打つ時、一時的にバージョンを切り替えたい場合、インストールしたパスを暗記しないと無理です。
この時、Java切替のアリスを用意すれば、ストレスがなく切り替えられると思います。
Javaのベンダーが沢山ありますが、Eclipse Temurinを愛用しています。
以降説明はEclipse Temurinをベースに説明します。
メジャーバージョンのJDKのインストール
リポジトリの追加
sudo apt-get install -y wget apt-transport-https
wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo tee /etc/apt/keyrings/adoptium.asc
echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | sudo tee /etc/apt/sources.list.d/adoptium.list
sudo apt-get update # update if you haven't already
v17のインストール
sudo apt-get install temurin-17-jdk
v11のインストール
sudo apt-get install temurin-11-jdk
v8のインストール
sudo apt-get install temurin-8-jdk
インストール済みのバージョンの確認
$ ll /usr/lib/jvm/
total 12K
drwxr-xr-x 9 root root 4.0K Dec 2 10:51 temurin-11-jdk-amd64
drwxr-xr-x 9 root root 4.0K Dec 2 10:50 temurin-17-jdk-amd64
drwxr-xr-x 8 root root 4.0K Dec 2 10:52 temurin-8-jdk-amd64
バージョンの切替
切替の事前準備
下記のスクリプトをBASHのリソースに追加します。
zshの場合、~/.zshrc
に下記のコマンドを追記してください。
# Jave Environment
export JAVA_17_HOME="/usr/lib/jvm/temurin-17-jdk-amd64"
export JAVA_11_HOME="/usr/lib/jvm/temurin-11-jdk-amd64"
export JAVA_8_HOME="/usr/lib/jvm/temurin-8-jdk-amd64"
# Default Java Version
export JAVA_HOME="${JAVA_17_HOME}"
sudo ln -sf ${JAVA_17_HOME}/bin/java /etc/alternatives/java
# Change Java Version
alias java17="export JAVA_HOME=$JAVA_17_HOME && sudo ln -sf ${JAVA_17_HOME}/bin/java /etc/alternatives/java"
alias java11="export JAVA_HOME=$JAVA_11_HOME && sudo ln -sf ${JAVA_11_HOME}/bin/java /etc/alternatives/java"
alias java8="export JAVA_HOME=$JAVA_8_HOME && sudo ln -sf ${JAVA_8_HOME}/bin/java /etc/alternatives/java"
バージョンの切替確認
$ java8
$ java -version
openjdk version "1.8.0_352"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_352-b08)
OpenJDK 64-Bit Server VM (Temurin)(build 25.352-b08, mixed mode)
$ java11
$ java -version
openjdk version "11.0.17" 2022-10-18
OpenJDK Runtime Environment Temurin-11.0.17+8 (build 11.0.17+8)
OpenJDK 64-Bit Server VM Temurin-11.0.17+8 (build 11.0.17+8, mixed mode)
$ java17
$ java -version
openjdk version "17.0.5" 2022-10-18
OpenJDK Runtime Environment Temurin-17.0.5+8 (build 17.0.5+8)
OpenJDK 64-Bit Server VM Temurin-17.0.5+8 (build 17.0.5+8, mixed mode, sharing)
Discussion