◀ 22.

【Java】Javaのバージョン確認方法

この記事の要点
  • 実行環境(JRE / JVM)のバージョンは java -version で確認する(Java 9 以降は java --version も可)
  • コンパイラ(JDK)のバージョンは javac -version で確認する
  • 1.8.0_131 は「Java 8 の Update 131」、Java 9 以降は 21.0.4 のように先頭が主バージョン
  • 複数入っているときは、実際に使われている java の場所(where java / which java)と JAVA_HOME を確認する
  • プログラム内からは System.getProperty("java.version") で取得できる

Java のバージョンを確認するコマンド

以下のコマンドを Windows のコマンドプロンプト(または PowerShell)、macOS・Linux のターミナルで実行すると、Java のバージョンを確認できます。

$ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

上は Oracle の Java 8 の出力例です。OpenJDK 系(Eclipse Temurin、Amazon Corretto など)の新しい版では、次のような形式になります(数字は環境によって異なります)。

$ java -version
openjdk version "21.0.4" 2024-07-16 LTS
OpenJDK Runtime Environment Temurin-21.0.4+7 (build 21.0.4+7-LTS)
OpenJDK 64-Bit Server VM Temurin-21.0.4+7 (build 21.0.4+7-LTS, mixed mode, sharing)

「java は内部コマンドまたは外部コマンド...として認識されていません」(Windows)や「command not found」と表示された場合は、Java がインストールされていないか、PATH が通っていません。

バージョン番号の読み方

Java 8 までは「1.x」という表記で、Java 9 から先頭の数字がそのまま主バージョンになりました。

表示意味
1.8.0_131Java 8 の Update 131
1.7.0_80Java 7 の Update 80
11.0.22Java 11(LTS)のアップデート版
17.0.10 / 21.0.4Java 17 / Java 21(どちらも LTS)

2026 年時点の長期サポート(LTS)版は 8・11・17・21・25 です。業務システムでは LTS 版が使われることがほとんどです。

JDK(コンパイラ)のバージョンを確認する

java は実行用のコマンドで、ソースをコンパイルする javac は JDK にだけ含まれます。開発環境では両方を確認し、バージョンが揃っているかを見ておきます。

$ javac -version
javac 21.0.4

javac が見つからない場合は、JRE しか入っていないか、JDK の bin に PATH が通っていません。

どの Java が使われているかを確認する

Java を複数インストールしていると、「入れたはずのバージョンと違う」ということがよく起きます。実際に呼ばれている java の場所を確認しましょう。

# Windows(コマンドプロンプト): PATH 上で見つかった順に表示
where java
echo %JAVA_HOME%

# macOS / Linux
which java
echo $JAVA_HOME

# Linux: シンボリックリンクをたどって実体を表示
readlink -f "$(which java)"

# macOS: インストール済みの JDK 一覧
/usr/libexec/java_home -V
  • PATH と JAVA_HOME は別物: ターミナルの java は PATH で決まり、Maven・Gradle・Tomcat などのツールは主に JAVA_HOME を見ます。両者が違うバージョンを指していると、「コマンドでは 21 なのにビルドは 8 で動く」といった食い違いが起きます
  • Linux で切り替える: Debian / Ubuntu は sudo update-alternatives --config java、RHEL 系は sudo alternatives --config java で既定の java を選べます
  • ビルドツールが使う Java: mvn -v や gradle -v を実行すると、そのツールが使っている Java のバージョンと場所が表示されます

プログラムの中でバージョンを確認する

public class VersionCheck {
    public static void main(String[] args) {
        System.out.println(System.getProperty("java.version")); // 例: 21.0.4
        System.out.println(System.getProperty("java.vendor"));  // 提供元
        System.out.println(System.getProperty("java.home"));    // 実行中の Java の場所
        // Java 9 以降は Runtime.version() で主バージョンを数値で取れる
        System.out.println(Runtime.version().feature());        // 例: 21
    }
}

サーバーアプリでは、起動ログにこの値を出しておくと、本番でどの Java が動いているかをすぐ確認できます。

よくある質問

java -version の出力をパイプで処理できない

java -version は標準エラー出力に表示するため、そのままでは grep などに渡せません。java -version 2>&1 | head -n 1 のように標準エラーを標準出力にまとめます。Java 9 以降の java --version は標準出力に表示します。

class ファイルが何の Java 向けにコンパイルされたか知りたい

javap -v Foo.class の出力にある major version で分かります。52 が Java 8、55 が Java 11、61 が Java 17、65 が Java 21 です。実行環境より新しい版でコンパイルされた class を動かすと UnsupportedClassVersionError になります。

関連

Post Share
子ページ

子ページはありません

同階層のページ
  1. プラットホーム
  2. 環境構築
  3. 文法
  4. API
  5. Servlet(サーブレット)
  6. JSP
  7. Applet(アプレット)
  8. デザインパターン
  9. フレームワーク
  10. ライブラリ
  11. Androidアプリケーション
  12. Project Jigsaw
  13. エラー一覧
  14. 日付の加算、減算
  15. 文字列の数字チェック
  16. 改行コードの削除
  17. 先頭と末端の文字の削除
  18. warファイルの中身を確認する方法
  19. nullもしくは空文字の判定
  20. beanの中身を確認する方法
  21. org.apache.log4j.Logger のログ出力で printStackTrace() のエラー内容を出力する方法
  22. Javaのバージョン確認方法