UbuntuにJavaをインストールする手順【OpenJDK 17/21対応】

開発環境

UbuntuにJavaをインストールするには、sudo apt install openjdk-21-jdk の1コマンドで完了します。この記事では、実際に Ubuntu 24.04 LTS の Docker コンテナで OpenJDK 17・21 をインストールし、その実行ログとバージョン番号をそのまま掲載しています。

「どのバージョンを選べばいいか」「複数バージョンを切り替えるには?」「JAVA_HOME の設定は必要?」という疑問も、実際に手を動かして確認した結果で答えます。

この記事のポイント

  • Ubuntu 24.04 LTS で確認済み:apt install openjdk-21-jdk でバージョン 21.0.11 が入る
  • 新規プロジェクトは OpenJDK 21(LTS・2031年9月サポート)を選ぶのが無難
  • 既存プロジェクトが Java 17 を要求する場合は openjdk-17-jdk を指定するだけ
  • 複数バージョンを共存させて update-alternatives で切り替えられる
  • apt install 後は JAVA_HOME の手動設定は不要(シンボリックリンクが自動で張られる)

動作確認環境

本記事のコマンドは Ubuntu 24.04 LTS(Docker公式イメージ ubuntu:24.04 で実測しています。Ubuntu 22.04 LTS でも同じコマンドで動作します(バージョン番号は同一でした)。

目次

  1. OpenJDK のバージョンと選び方
  2. OpenJDK 21 をインストールする(推奨)
  3. OpenJDK 17 をインストールする
  4. インストールを確認する
  5. Hello World で動作確認する
  6. 複数バージョンの切り替え(update-alternatives)
  7. JAVA_HOME の設定
  8. よくあるエラーと解決策
  9. まとめ

OpenJDK のバージョンと選び方

Ubuntu の標準リポジトリには OpenJDK の複数バージョンが用意されています。実際に Ubuntu 24.04 と 22.04 の Docker コンテナで apt-cache search openjdk を実行したところ、8・11・17・21 の4バージョンが APT でインストール可能でした。

Ubuntu 22.04/24.04 で利用可能なOpenJDKバージョン比較(実測)
Ubuntu 22.04/24.04 で利用可能なOpenJDKバージョン比較(実測)

どれを選べばいいか迷ったら、次の基準で決めてください:

  • 新しくプロジェクトを始める場合openjdk-21-jdk(現行 LTS・2031年9月まで)
  • 既存のプロジェクトが Java 17 を要求する場合openjdk-17-jdk(2029年9月まで)
  • 古い Maven/Gradle プロジェクトが Java 11 を必要とする場合openjdk-11-jdk
  • Java 8 が必要なレガシーシステムopenjdk-8-jdk(2025年3月でサポート終了済みのため非推奨)

正直なところ、特に理由がなければ OpenJDK 21 を選んでおくのが無難です。Spring Boot 3 系・Gradle 8 系・Maven 3.9 系はいずれも Java 21 に対応しており、最も長くサポートが続きます。

OpenJDK 21 をインストールする(推奨)

まずパッケージリストを更新してから、openjdk-21-jdk をインストールします。




ubuntu@linuxlab: ~
$ sudo apt update
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Get:2 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB]
Fetched 6,498 kB in 3s (2,166 kB/s)
Reading package lists… Done
$ sudo apt install -y openjdk-21-jdk
The following additional packages will be installed:
openjdk-21-jdk-headless openjdk-21-jre openjdk-21-jre-headless
Setting up openjdk-21-jre-headless:amd64 (21.0.11+10-1~24.04.2) …
Setting up openjdk-21-jre:amd64 (21.0.11+10-1~24.04.2) …
Setting up openjdk-21-jdk:amd64 (21.0.11+10-1~24.04.2) …
OpenJDK 21 apt install 実行ログ(ubuntu:24.04 実測)
OpenJDK 21 apt install 実行ログ(ubuntu:24.04 実測)

インストールが完了したら、バージョンを確認します。




ubuntu@linuxlab: ~
$ java -version
openjdk version “21.0.11” 2026-04-21
OpenJDK Runtime Environment (build 21.0.11+10-1-24.04.2-Ubuntu)
OpenJDK 64-Bit Server VM (build 21.0.11+10-1-24.04.2-Ubuntu, mixed mode, sharing)
$ javac -version
javac 21.0.11

openjdk version "21.0.11" と表示されれば成功です。javac コマンドが使えることで、Java のコンパイル環境(JDK)が正しく入ったことを確認できます。

なお、実行環境だけあれば良い場合(サーバーで .jar を動かすだけ等)は openjdk-21-jre の方がインストールサイズを小さくできます。開発もするなら jdk を選んでください。

OpenJDK 17 をインストールする

既存プロジェクトが Java 17 を要求する場合は、バージョン番号を変えるだけです。




ubuntu@linuxlab: ~
$ sudo apt update
Reading package lists… Done
$ sudo apt install -y openjdk-17-jdk
Setting up openjdk-17-jre-headless:amd64 (17.0.19+10-1~24.04.2) …
Setting up openjdk-17-jdk:amd64 (17.0.19+10-1~24.04.2) …
$ java -version
openjdk version “17.0.19” 2025-04-15
OpenJDK Runtime Environment (build 17.0.19+10-1~24.04.2)
OpenJDK 64-Bit Server VM (build 17.0.19+10-1~24.04.2, mixed mode, sharing)
$ javac -version
javac 17.0.19

Ubuntu 24.04 では openjdk-17-jdk 17.0.19+10-1~24.04.2 がインストールされました。Ubuntu 22.04 でも同じバージョン(17.0.19)が取得できることを確認しています。

注意:JRE と JDK の違い

openjdk-XX-jre は実行環境のみ(java コマンド)、openjdk-XX-jdk はコンパイラ(javac)を含む開発環境です。サーバーで .jar ファイルを動かすだけなら JRE で十分ですが、Maven や Gradle を使ってビルドする場合は JDK が必要です。

インストールを確認する

インストール後に確認しておくべきコマンドをまとめます。




ubuntu@linuxlab: ~
$ java -version
openjdk version “21.0.11” 2026-04-21
OpenJDK Runtime Environment (build 21.0.11+10-1-24.04.2-Ubuntu)
$ javac -version
javac 21.0.11
$ which java
/usr/bin/java
$ dpkg -l | grep openjdk-21
ii openjdk-21-jdk:amd64 21.0.11+10-1~24.04.2 amd64 OpenJDK Development Kit (JDK)
ii openjdk-21-jre:amd64 21.0.11+10-1~24.04.2 amd64 OpenJDK Java runtime, using Hotspot JIT

java -version で正しいバージョンが返ってきて、javac -version が使えれば完了です。dpkg -l | grep openjdk でインストール済みパッケージを一覧できます。

Hello World で動作確認する

実際にコードをコンパイル・実行して動作確認します。Ubuntu 24.04 の Docker コンテナで試したところ、問題なく動きました。




ubuntu@linuxlab: ~
$ mkdir ~/hello-java && cd ~/hello-java
$ cat > Hello.java << ‘EOF’
public class Hello {
public static void main(String[] args) {
System.out.println(“Hello, Java!”);
}
}
EOF
$ javac Hello.java
(エラーなし:Hello.class が生成される)
$ java Hello
Hello, Java!
Hello World コンパイル・実行の実測ログ(ubuntu:24.04)
Hello World コンパイル・実行の実測ログ(ubuntu:24.04)

Hello, Java! と出力されれば、コンパイルと実行が正常に動いていますjavac でコンパイル後に .class ファイルが生成され、java コマンドで実行する、というのが Java の基本的な流れです。

著者アイコン
著者アイコン

Hello.java というファイル名とクラス名 Hello が一致していないと、javac がエラーを出します。これは Java 初心者が最初に引っかかるポイントです。クラス名とファイル名を必ず一致させてください。

複数バージョンの切り替え(update-alternatives)

プロジェクトによって Java 17 と 21 を使い分けたい場合、両方インストールしておいて update-alternatives で切り替えられます。実際に確認した結果を見てください。

update-alternatives で Java 17/21 を切り替える(Ubuntu 24.04 実測)
update-alternatives で Java 17/21 を切り替える(Ubuntu 24.04 実測)



ubuntu@linuxlab: ~
$ sudo apt install -y openjdk-17-jdk openjdk-21-jdk
(両方インストール)
$ update-alternatives –list java
/usr/lib/jvm/java-17-openjdk-amd64/bin/java
/usr/lib/jvm/java-21-openjdk-amd64/bin/java
$ sudo update-alternatives –config java
There are 2 choices for the alternative java.
Selection Path Priority
* 0 /usr/lib/jvm/java-21-openjdk-amd64/bin/java 2111 auto mode
1 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 manual mode
2 /usr/lib/jvm/java-21-openjdk-amd64/bin/java 2111 manual mode
Press <enter> to keep the current choice[*], or type selection number: 1
$ java -version
openjdk version “17.0.19” 2025-04-15

実測で確認した重要な発見が1つあります。OpenJDK 17 と 21 を両方インストールすると、優先度の高い Java 21(priority 2111)が自動モードで選ばれます。Java 17(priority 1711)に切り替えるには update-alternatives --config java で選択番号 1 を入力してください。

JAVA_HOME の設定

Maven や一部のツールは環境変数 JAVA_HOME を参照します。Ubuntu で apt install した場合、JAVA_HOME のパスは以下になります。




ubuntu@linuxlab: ~
$ ls /usr/lib/jvm/
java-1.21.0-openjdk-amd64 java-21-openjdk-amd64 openjdk-21
$ readlink -f $(which java)
/usr/lib/jvm/java-21-openjdk-amd64/bin/java
$ dirname $(dirname $(readlink -f $(which java)))
/usr/lib/jvm/java-21-openjdk-amd64

JAVA_HOME を永続設定するには ~/.bashrc(または /etc/environment)に以下を追記します。




ubuntu@linuxlab: ~
$ echo ‘export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64’ >> ~/.bashrc
$ echo ‘export PATH=$JAVA_HOME/bin:$PATH’ >> ~/.bashrc
$ source ~/.bashrc
$ echo $JAVA_HOME
/usr/lib/jvm/java-21-openjdk-amd64

注意:アーキテクチャによってパスが変わります

x86_64 マシン(一般的なPC・VPS)では java-21-openjdk-amd64、ARM64 マシン(M1/M2 Mac・Raspberry Pi・一部VPS)では java-21-openjdk-arm64 になります。dirname $(dirname $(readlink -f $(which java))) で自分の環境のパスを確認してから設定してください。

よくあるエラーと解決策

①「Unable to locate package openjdk-21-jdk」が出る

パッケージリストが古いと発生します。




ubuntu@linuxlab: ~
E: Unable to locate package openjdk-21-jdk
$ sudo apt update
Reading package lists… Done
$ sudo apt install -y openjdk-21-jdk
OK

apt update を忘れがちですが、これをやらないと古いパッケージリストを参照してしまいます。apt install の前に必ず実行してください。

②「JAVA_HOME is not set」とビルドツールに言われる

Maven や Gradle で JAVA_HOME エラーが出た場合、上の手順で環境変数を設定してください。設定後は source ~/.bashrc で反映します。

③「java: command not found」が出る

JDK ではなく JRE(ランタイムのみ)をインストールした可能性があります。




ubuntu@linuxlab: ~
$ dpkg -l | grep java
(インストール状況を確認)
$ sudo apt install -y openjdk-21-jdk
Setting up openjdk-21-jdk …

④「Error: LinkageError occurred while loading main class」が出る

コンパイル時と実行時で Java のバージョンが違う場合に発生します。update-alternatives で使用バージョンを統一するか、JAVA_HOME を正しく設定してください。

まとめ

Ubuntu に Java(OpenJDK)をインストールする手順をまとめます。

インストール手順まとめ

  • まず sudo apt update でパッケージリストを更新する
  • OpenJDK 21(推奨): sudo apt install -y openjdk-21-jdk
  • OpenJDK 17: sudo apt install -y openjdk-17-jdk
  • java -version でバージョン確認(Ubuntu 24.04 実測: 21.0.11)
  • 複数バージョンは sudo update-alternatives --config java で切り替え
  • JAVA_HOME は dirname $(dirname $(readlink -f $(which java))) で確認

Ubuntu の OpenJDK はリポジトリ標準のため、追加のサードパーティリポジトリ設定は不要です。apt updateapt install だけで最新の LTS バージョンが入るのが Ubuntu のメリットです。

本格的にサーバーで Java アプリを動かしたい方は、VPS を使うとローカルマシンに環境を作らなくて済みます。

VPS を選ぶ際の参考に、こちらの比較記事もどうぞ:【実測比較】VPS速度・料金の徹底比較

コメント

タイトルとURLをコピーしました