| この記事の要点 |
|
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・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Visual Studio「デザイナーを表示できません」エラーの原因と対処 2026-10-28 12:06:00
- SSH 認証に失敗しました。再試行してください の対処 2026-10-28 12:06:00
- SSH2 秘密鍵の読み込みに失敗しました の原因と対処 2026-10-28 12:06:00
- TeraTerm のよくあるエラーと対処法完全ガイド — Connection refused / 2026-10-28 12:06:00
- Visual Studio エラー一覧|コンパイルエラー・警告の確認方法と対処 2026-10-28 11:39:57
- Whitelabel Error Page の原因と消し方|Spring Boot のエラーページ 2026-10-28 11:39:57
- Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法 2026-10-28 11:39:57
- SQL WHERE 句完全ガイド 2026-10-28 11:39:57
- SQL JOIN 完全ガイド (INNER/LEFT/RIGHT/FULL OUTER) 2026-10-28 11:39:57
- tomcat の起動 / 停止ログと catalina.log・catalina.out の違い 2026-10-28 10:24:23
- Tomcat の起動確認方法 5 つ|localhost:8080・ポート・プロセス・ログ 2026-10-28 10:24:23
- Oracle 19c COMMITの使い方: 暗黙コミット・自動確定・応答不明時の確認 2026-10-28 09:59:09
- Oracle 19c DELETE文|削除対象の確認・COMMIT前の判断・ROLLBACKの条件 2026-10-28 09:59:09
- Oracle 19c INSERT文|INSERT ALL・SELECT・RETURNINGとMERGEの使い分け 2026-10-28 09:59:09
- Oracle 19cのトランザクション制御|COMMIT・ROLLBACK・分離レベルと接続設定 2026-10-28 09:59:09