| この記事の要点 |
|
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_131 | Java 8 の Update 131 |
1.7.0_80 | Java 7 の Update 80 |
11.0.22 | Java 11(LTS)のアップデート版 |
17.0.10 / 21.0.4 | Java 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 になります。
関連
- 【Tomcat】JRE(JVM)のJavaのバージョン確認方法
- java.lang.UnsupportedClassVersionError の原因と対処 (JDK バージョン違い)
- 環境変数の設定方法 (Windows / Linux / Mac)
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38