JDK のインストールと設定
カテゴリ:Java

CentOS/Ubuntu 両対応
OS付属のJDKのインストール
以下のコマンドで OS 付属の JDK をインストールします。
CentOS 7 の場合:
# yum -y install java-11-openjdk-devel
CentOS 8 以降の場合:
# dnf -y install java-11-openjdk-devel
Ubuntu の場合:
# apt -y install default-jdk
以下のコマンドで JDK のバージョンを確認します。
# javac -version
例)
# javac -version javac 11.0.12
Oracle JDKのインストール
クライアントマシンでOracleのサイト(https://www.oracle.com/)から JDK をダウンロードし、scp コマンド等で VPS にアップロードします。
以下のコマンドでJDKをインストールします。
CentOS 7 の場合:
# yum -y install jdk-16.0.2_linux-x64_bin.rpm
CentOS 8 以降の場合:
# dnf -y install jdk-16.0.2_linux-x64_bin.rpm
Ubuntu の場合:
# dpkg -i jdk-16.0.2_linux-x64_bin.deb
使用するJDKを設定
JDKを登録および使用するJDKを選択する場合は、alternativesコマンド(Ubuntuの場合は、update-alternativesコマンド)を使用します。
インストールされているJRE/JDKを確認
以下のコマンドでインストールされているJRE/JDKの一覧を表示します。先ほどインストールしたOracleのJDKはすでに自動で登録されていることが確認できます。
CentOS の場合:
# alternatives --config java There are 2 programs which provide 'java'. Selection Command ----------------------------------------------- 1 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.12.0.7-0.el8_4.x86_64/bin/java) *+ 2 /usr/java/jdk-16.0.2/bin/java Enter to keep the current selection[+], or type selection number:
しかしUbuntuの場合は、先ほどインストールした Oracle JDK 1.6 の登録がないことが分かります。
Ubuntu の場合:
# update-alternatives --config java There are 2 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode Pressto keep the current choice[*], or type selection number:
JDKを登録する場合
まず、/usr/lib/jvm/配下のJDKのパス(Ubuntu の場合)を確認します。するとjdk-16.0.2というフォルダが確認できます。つまりjavacのパスは/usr/lib/jvm/jdk-16.0.2/bin/javacとなります。
# ls /usr/lib/jvm/ default-java java-1.8.0-openjdk-amd64 java-8-openjdk-amd64 openjdk-11 java-1.11.0-openjdk-amd64 java-11-openjdk-amd64 jdk-16.0.2
JDKを手動で登録する場合は、--installオプションの後ろにリンク、名前、JDKのパス、優先度を指定します。
--install リンク 名前 パス 優先度
参考
「リンク」は、/etc/alternatives/名前へのシンボリックリンクです。
「名前」は、該当リンクグループのマスター名です。
「パス」は、代替ターゲットファイル(javac)の場所です。
「優先度」は整数を指定します。自動モードでは、数値が大きいほど優先度が高くなります。そのため、一般的にはJDKのバージョンを整数値に変換して指定します。(16.0.2->1602)
CentOS の場合:
# alternatives --install /usr/bin/java java /usr/java/jdk-16.0.2/bin/java 1602
Ubuntu の場合:
# update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-16.0.2/bin/javac 1602
再度、インストールされているJRE/JDKの一覧を確認すると、先ほどは無かったjdk-16.0.2が追加されていることが確認できます。
# update-alternatives --config java There are 3 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/lib/jvm/jdk-16.0.2/bin/javac 1602 auto mode * 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode 3 /usr/lib/jvm/jdk-16.0.2/bin/javac 1602 manual mode Pressto keep the current choice[*], or type selection number:
JDKの登録を削除する場合
もし間違って登録してしまった場合など、JDKの登録を削除する場合は、--removeオプションの後ろに名前、JDKのパスを指定します。
--remove 名前 パス
CentOS の場合:
# alternatives --remove java /usr/java/jdk-16.0.2/bin/java
Ubuntu の場合:
# update-alternatives --remove java /usr/lib/jvm/jdk-16.0.2/bin/javac
使用するJDKを変更
使用するJDKを変更する場合は、以下のように使用するJDKの番号を指定します。
Ubuntu の場合:
# update-alternatives --config java There are 3 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/lib/jvm/jdk-16.0.2/bin/javac 1602 auto mode * 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode 3 /usr/lib/jvm/jdk-16.0.2/bin/javac 1602 manual mode Pressto keep the current choice[*], or type selection number: 3 update-alternatives: using /usr/lib/jvm/jdk-16.0.2/bin/javac to provide /usr/bin/java (java) in manual mode
以下のように、/etc/alternatives/javaのシンボリックリンク先が/usr/lib/jvm/jdk-16.0.2/bin/javacに変更されています。
# ls -la /etc/alternatives/java lrwxrwxrwx 1 root root 33 Aug 23 11:02 /etc/alternatives/java -> /usr/lib/jvm/jdk-16.0.2/bin/javac
そして、/etc/alternatives/javaは/usr/bin/javaからシンボリックリンクされています。
# ls -la /usr/bin/java lrwxrwxrwx 1 root root 22 Aug 23 03:56 /usr/bin/java -> /etc/alternatives/java
使用中のJavaのバージョンを確認
javaコマンドに-versionオプションを付けて実行します。
CentOS の場合:
# java --version java 16.0.2 2021-07-20 Java(TM) SE Runtime Environment (build 16.0.2+7-67) Java HotSpot(TM) 64-Bit Server VM (build 16.0.2+7-67, mixed mode, sharing)
Ubuntu の場合:
# java -version javac 16.0.2
公開日時:2014年08月09日 07:33:33
最終更新日時:2022年03月12日 02:36:26