1. この記事で分かること(最初に結論)
このページでは、「Javaのバージョンをコマンドで確認したい」という目的を、最短で達成できるように整理します。
結論だけ先に言うと、確認で使うコマンドは基本的にこの2つです。
- 実行されるJavaのバージョン →
java -version - 開発用JDK(コンパイラ)のバージョン →
javac -version
ただし、実務では「確認したら想定と違うバージョンが出る」ことがよく起きます。
この記事は、単にコマンドを紹介するだけでなく、なぜズレるのか/どう直すのかまで分かる構成です。
1.1 この記事でできるようになること
読み終えると、次のことができるようになります。
- Javaのバージョンを即座に確認できる
java -version/javac -versionを迷わず使い分けられる
- Windows / macOS / Linux での確認方法が分かる
- OSごとの「よくある差」を踏まえて確認できる
- 複数のJavaが入っている環境でも、どれが使われているか特定できる
- 「インストールしたのに古いのが出る」問題を自力で切り分けられる
- 表示されるバージョンが想定と違うときの典型原因と対処が分かる
- PATH / JAVA_HOME / 切り替え設定の基本が分かる
1.2 この記事の想定読者(初心者でもOK)
- Javaを使う必要が出てきたが、まず自分のPCに入っているJavaが何かを知りたい
- 仕事や学習で「Java 17が必要」「Java 8指定」などと言われ、今のバージョン確認が必要
- コマンドを実行したら、思っていたバージョンと違う結果が出て困っている
javaは動くが、javacが動かないなど、JRE/JDK周りがよく分からない
1.3 先に知っておくと迷わないポイント(超重要)
Javaのバージョン確認で迷う原因は、だいたいこの1点に集約されます。
- 「インストールされているJava」=「実際に実行されるJava」ではない
PCにJavaが複数入っていると、実行時には「優先順位の高い場所にあるJava」が使われます。
そのため、java -version の結果が「インストールしたはずの最新版」にならないことがあります。
この記事では、こうしたズレを前提に、
- まず何を打てばいいか(最短手順)
- 次に何を見れば原因特定できるか(調査手順)
- どう直すか(対処手順)
を順番に解説していきます。
2. まずはこれだけ:Javaバージョン確認コマンド一覧(コピペ用)
Javaのバージョン確認で使うコマンドは多くありません。
まずはこのセクションだけ覚えておけば、9割のケースは解決します。
2.1 実行時に使われるJavaのバージョンを確認する
java -versionこのコマンドは、今このPCで実際に実行されるJavaのバージョンを表示します。
最も基本かつ重要な確認方法です。
出力される情報の例(イメージ)
- Javaのバージョン番号(例:17 / 21 / 1.8 など)
- 実装(OpenJDK / Oracle JDK など)
- 64bit / Server VM といった実行環境情報
ポイントは、「PATH上で最優先されている java」が対象になるという点です。
「どこにインストールしたか」ではなく、「どれが呼び出されているか」を確認するコマンドだと理解してください。
2.2 Javaの開発環境(JDK)のバージョンを確認する
javac -versionこのコマンドは、Javaコンパイラ(javac)のバージョンを表示します。
ここで分かること
- JDKが正しくインストールされているか
- 実行用だけでなく、開発用のJavaが使える状態か
もしこのコマンドで
- 「コマンドが見つかりません」
- 「javac は内部コマンドではありません」
と表示される場合、JDKが入っていない、または PATHが通っていない可能性が高いです。
2.3 java -version と javac -version の違い(初心者が混乱しやすい点)
| コマンド | 何を確認するか | 主な用途 |
|---|---|---|
java -version | 実行時のJava | アプリ実行・動作確認 |
javac -version | コンパイラ(JDK) | 開発・ビルド |
よくある誤解として、
java -versionが動く = 開発できる
という認識がありますが、これは正しくありません。- 実行だけ →
java - 開発(コンパイル) →
javac
この2つは役割が違うため、両方確認するのが基本です。
2.4 JDKに付属するツールで確認する方法(補足)
環境によっては、次のコマンドでもJDKのバージョンを確認できます。
jshell --versionjshellは JDK 9以降で標準搭載されているツール- このコマンドが使える → JDKがインストールされている目安になる
ただし、基本は java -version と javac -version を押さえておけば十分です。
2.5 まずはこの順番で確認するのがおすすめ
初心者の方は、次の順で確認すると混乱しにくくなります。
java -version
→ 実行されるJavaのバージョンを確認javac -version
→ 開発用JDKが使えるか確認- 想定と違えば、次のセクションでOS別の確認方法を見る
3. java -version の見方(出力例と読み解き)
ここでは、java -version を実行したときに表示される内容を、初心者でも迷わないように順番に読み解きます。
「どこを見ればいいのか分からない」という状態を防ぐためのセクションです。
3.1 java -version の基本的な役割
java -version
このコマンドが示すのは、今この瞬間に実行されるJavaのバージョンです。
インストール済みのJava一覧ではなく、実際に使われる1つが表示されます。
そのため、この結果が次のような用途の基準になります。
- アプリやツールが指定するJavaバージョンを満たしているか
- 本番・検証環境で想定通りのJavaが動いているか
- なぜか古いJavaが使われていないか
3.2 出力結果の典型例(イメージ)
環境によって表記は多少異なりますが、概ね次のような情報が並びます。
java version "17.0.8"
Java(TM) SE Runtime Environment (build 17.0.8+9)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.8+9, mixed mode)この中で、最も重要なのは最初の行です。
3.3 最初に確認すべきポイント(ここだけ見ればOK)
① バージョン番号
java version "17.0.8"17→ Java 17系1.8.x→ Java 821.x→ Java 21
多くの現場では、8 / 11 / 17 / 21 といったLTS(長期サポート)版が使われます。
まずは「要求されているメジャーバージョンか」を確認してください。
② Javaの実装(Oracle / OpenJDK など)
Java(TM) SE Runtime Environmentまたは
OpenJDK Runtime Environmentここは通常、動作確認レベルではそこまで神経質になる必要はありません。
ただし、企業やプロジェクトによっては「Oracle JDK指定」「OpenJDK指定」がある場合もあります。
③ 64-Bit / Server VM 表記
64-Bit Server VM- ほとんどの現代環境では 64-Bit が正常
- 特別な理由がなければ、ここは確認程度で問題ありません
3.4 なぜ「思っていたJavaと違う結果」が出るのか
初心者が最も混乱しやすいポイントです。
よくある勘違い
- 「最新のJavaをインストールした」
- 「だから
java -versionも最新版になるはず」
実際には、これは保証されません。
理由は単純で、
java -versionは
PATH上で最優先に見つかったjavaを実行する
からです。
つまり、
- 古いJavaがPATHの前方に残っている
- 複数のJDK/JREが混在している
こうした状態だと、インストールしたJavaとは別のものが実行されます。
3.5 java -version は「場所」ではなく「結果」を見るコマンド
重要な考え方として、
- ❌ どこにJavaを入れたか
- ⭕ どのJavaが実行されているか
を見るのが java -version です。
「表示された結果が正しいかどうか」だけをまず判断し、
違っていれば、後続セクションで原因を特定して修正する、という流れが安全です。
4. javac -version の見方(JDKが入っているか確認する)
ここでは、javac -version の役割と読み方を解説します。
「Javaは動くのに、開発ができない」というトラブルは、このコマンドを理解すると一気に解消します。
4.1 javac とは何か(初心者向け整理)
javac は Java Compiler(コンパイラ) の略です。
java
→ 作成済みのプログラムを実行するjavac
→ ソースコード(.java)をコンパイルする
つまり、
- 実行だけしたい →
javaがあれば足りる - 開発・ビルドしたい →
javacが必須
という役割分担になっています。
4.2 javac -version で分かること
javac -versionこのコマンドで確認できるのは、今使われているJavaコンパイラのバージョンです。
出力例(イメージ)
javac 17.0.8ここで表示される数値は、
- そのまま JDKのバージョン
- 実務上は コンパイル時に使われるJavaの基準
と考えて問題ありません。
4.3 java -version と一致していない場合の注意点
次のような状態は、実務でよく発生します。
java -version→ 17javac -version→ 11
この場合、
- 実行環境:Java 17
- 開発環境:Java 11
という ズレた状態になっています。
このズレが引き起こす問題
- 新しい構文が使えない
- ビルドは通るが実行時にエラーが出る
- CI環境とローカル環境で挙動が違う
そのため、基本方針としては両方のバージョンを揃えるのが安全です。
4.4 javac が見つからない場合(よくあるエラー)
次のような表示が出ることがあります。
- 「
javacは内部コマンドまたは外部コマンドとして認識されていません」 - 「command not found: javac」
この場合、考えられる原因はほぼ次の2つです。
原因1:JDKがインストールされていない
- JRE(実行環境)のみが入っている
- 開発用ツールが含まれていない
原因2:PATHが通っていない
- JDKは入っているが、
binディレクトリがPATHに含まれていない
どちらかは、OS別の確認セクションで確実に切り分けられます。
4.5 javac -version は「開発できるか」の判断材料
初心者の方は、次のように覚えておくと混乱しません。
java -version
→ 実行できるかjavac -version
→ 開発できるか
両方が想定通りのバージョンを示していれば、
Java環境としては最低限の準備が整っている状態です。
5. WindowsでJavaのバージョンを確認する方法
このセクションでは、Windows環境でのJavaバージョン確認手順を、実務でつまずきやすいポイントを含めて解説します。
Windowsは複数Javaが混在しやすいOSのため、確認の順番が特に重要です。
5.1 コマンドプロンプト/PowerShellで確認する(基本)
まずは、最も基本的な方法です。
- コマンドプロンプト または PowerShell を起動
- 次のコマンドを実行
java -version続いて、開発用途の場合は次も確認します。
javac -versionこの時点で、
- 両方が想定通りのバージョン
→ 問題なし - 想定外のバージョン
→ 次の手順で原因特定
という判断になります。
5.2 Windows特有の重要コマンド:where java
Windowsでは、どの java.exe が使われているかを特定することが非常に重要です。
where java実行結果の例(イメージ)
C:\Program Files\Java\jdk-17\bin\java.exe
C:\Program Files\Common Files\Oracle\Java\javapath\java.exeこのように複数行表示される場合、上に表示されたものが優先的に実行されます。
5.3 「インストールしたのに古いJavaが使われる」原因
Windowsでよくある原因は次の通りです。
- 以前インストールしたJavaが残っている
javapathがPATHの前方にある- JAVA_HOMEとPATHが一致していない
特に、
C:\Program Files\Common Files\Oracle\Java\javapathがPATHに含まれていると、意図しないJavaが呼ばれるケースが多発します。

5.4 JAVA_HOME の確認方法(Windows)
次に、JAVA_HOME を確認します。
echo %JAVA_HOME%- 何も表示されない
→ JAVA_HOMEが未設定 - 想定外のパスが表示される
→ 古いJavaを参照している可能性あり
正しい状態の例
C:\Program Files\Java\jdk-17※ bin ではなく JDKのルートディレクトリを指している点が重要です。
5.5 Windowsでの安全な確認手順まとめ
初心者の方は、次の順番で確認すると混乱しません。
java -versionjavac -versionwhere javaecho %JAVA_HOME%
この4点がすべて整っていれば、
WindowsのJava環境は正しく構成されていると判断できます。
5.6 GUI(環境変数画面)での確認は最後でOK
Windowsには、環境変数をGUIで確認・編集する画面もありますが、
- どのJavaが使われているか
- なぜズレているか
を判断するには、コマンド結果の方が圧倒的に正確です。
GUIは「修正するとき」に使い、
確認は必ずコマンドで行う、というのが実務的な考え方です。
6. macOSでJavaのバージョンを確認する方法
このセクションでは、macOS環境でのJavaバージョン確認手順を解説します。
macOSはWindowsと違い、システム側がJDKを管理する仕組みがあるため、専用の確認方法を知っておくと混乱しません。
6.1 ターミナルで基本コマンドを確認する
まずは、macOSでも共通の基本コマンドから確認します。
- ターミナルを起動
- 次のコマンドを実行
java -version続いて、開発用途の場合は以下も確認します。
javac -versionこの2つの結果が想定通りであれば、
macOS上で実際に使われているJava環境は問題ありません。
6.2 macOSでは「JAVA_HOME」を自動管理している点に注意
macOSでは、JAVA_HOME を手動で固定せず、
システムコマンドで動的に取得するのが一般的です。
その代表的なコマンドがこちらです。
/usr/libexec/java_home実行結果の例(イメージ)
/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Homeこのパスが、現在のデフォルトJDKのホームディレクトリになります。
6.3 インストール済みJDKの一覧を確認する
複数のJDKが入っている場合は、次のコマンドが非常に役立ちます。
/usr/libexec/java_home -Vこのコマンドを実行すると、
- インストールされているJDKのバージョン
- ベンダー(Oracle / OpenJDK系など)
- 対応アーキテクチャ
が一覧表示されます。
macOSでは、どのJDKが入っているかの事実確認にまずこれを使うと安全です。
6.4 java -version と java_home の結果が違う場合
次のような状況が起きることがあります。
/usr/libexec/java_home→ Java 17java -version→ Java 11
この場合、考えられる原因は次の通りです。
- シェルの設定(
.zshrc/.bashrc)でJAVA_HOMEを固定している - PATHに別のJavaが先に含まれている
- Homebrew経由のJavaが優先されている
macOSでは、ユーザー設定が優先されるため、
シェル設定ファイルの影響を強く受けます。
6.5 macOSでの安全な確認手順まとめ
macOSでは、次の順番で確認すると整理しやすくなります。
java -versionjavac -version/usr/libexec/java_home/usr/libexec/java_home -V
この4点を確認すれば、
- 今使われているJava
- インストール済みのJava一覧
- デフォルトJDK
を正確に把握できます。
6.6 macOSでは「切り替え前提」で考える
macOS環境では、
- プロジェクトごとにJavaバージョンが違う
- 複数JDKを切り替えて使う
というケースが珍しくありません。
そのため、
- 1つしかJavaがない前提で考えない
- 「今どれが使われているか」を毎回確認する
という意識を持つと、トラブルを避けやすくなります。
7. LinuxでJavaのバージョンを確認する方法
このセクションでは、Linux環境(特にサーバー用途)でのJavaバージョン確認方法を解説します。
Linuxではディストリビューションごとに管理方法が異なりますが、基本的な考え方は共通です。
7.1 まずは基本コマンドで確認する
Linuxでも、最初に確認するコマンドは共通です。
java -version開発用途やビルドが必要な場合は、次も確認します。
javac -versionこの2つで、
- 実行時に使われるJava
- コンパイルに使われるJDK
が想定通りかどうかを判断します。
7.2 which java で実体の場所を確認する
Linuxでは、どの実行ファイルが呼ばれているかを把握することが重要です。
which java実行結果の例
/usr/bin/javaこのパスが、java -version で実行されているJavaの実体です。
さらに詳しく確認したい場合は、次のようにします。
ls -l $(which java)これにより、シンボリックリンクの実体まで追跡できます。
7.3 Debian / Ubuntu系での複数Java管理(update-alternatives)
サーバー用途で特に多いのが、複数のJavaがインストールされているケースです。
Debian / Ubuntu 系では、update-alternatives で管理されていることが多くあります。
使用中のJava候補を確認
update-alternatives --list java現在の設定状況を確認
update-alternatives --display javaここで表示されるパスが、システムとして選択されているJavaです。
7.4 java -version と alternatives が一致しない場合
まれに、次のようなズレが発生します。
update-alternatives上は Java 17java -versionは Java 11
この場合、考えられる原因は次の通りです。
- ユーザーのPATHに別のJavaが含まれている
/usr/local/binなどに手動配置されたJavaがある- sudo実行時と通常実行時でPATHが違う
Linuxでは、
- システム設定
- ユーザー環境
の両方が影響する点に注意が必要です。
7.5 Linuxでの安全な確認手順まとめ
Linux環境では、次の順番で確認すると整理しやすくなります。
java -versionjavac -versionwhich javaupdate-alternatives --display java(該当する場合)
これで、
- 実行中のJava
- 実体ファイル
- システム設定
を一通り把握できます。
8. 表示されるJavaバージョンが違う原因と対処法
Javaのバージョン確認で多いトラブルは、コマンド自体ではなく環境設定にあります。
ここでは、OSを問わず共通する原因を整理します。
8.1 原因1:PATHの優先順位が想定と違う
最も多い原因です。
- 古いJavaの
binがPATHの前方にある - 新しいJavaを入れただけで、PATHを修正していない
対処の考え方
- どのJavaが実行されているかを特定
- 不要なPATHを削除、または順序を修正
「追加しただけ」では解決しない点が重要です。
8.2 原因2:JAVA_HOMEと実際のJavaが一致していない
- JAVA_HOME → Java 11
- 実行されるJava → Java 17
という状態もよくあります。
対処の考え方
- JAVA_HOMEはJDKのルートディレクトリを指す
- PATHでは
$JAVA_HOME/binが使われるようにする
JAVA_HOMEは「目印」、PATHは「実行優先度」と覚えると分かりやすいです。
8.3 原因3:java と javac のバージョンが違う
これは、JREとJDKが混在している典型例です。
- 実行はできる
- 開発やビルドで失敗する
という症状につながります。
対処の考え方
- JDKを1つ基準に決める
javaとjavacを同じJDK配下に揃える
8.4 原因4:IDEやビルドツールが別JDKを使っている
- ターミナルでは問題ない
- IDEやCIではエラーが出る
という場合、IDE独自のJDK設定が原因のことがあります。
対処の考え方
- IDEの設定画面で使用JDKを明示的に確認
- 「自動検出任せ」にしない
9. 確認だけで終わらせないためのチェックリスト
最後に、Javaバージョン確認後にやるべきことを整理します。
9.1 実行だけが目的の場合
java -versionが要件を満たしているか- アプリが正常に起動するか
9.2 開発・ビルドが目的の場合
javac -versionが要件を満たしているかjavaとjavacのバージョンが一致しているか- JAVA_HOME と PATH が揃っているか
9.3 複数Javaを使い分ける場合
- 今どのJavaが使われているかを毎回確認
- OSごとの管理方法(macOS / Linux)を理解しておく
10. FAQ(よくある質問)
10.1 java -version と javac -version は何が違いますか?
java -version は実行時のJava、javac -version は開発用コンパイラ(JDK)のバージョンを確認します。
用途が違うため、両方確認するのが基本です。
10.2 javac が見つからないのはなぜですか?
- JDKがインストールされていない
- PATHが通っていない
このどちらかであるケースがほとんどです。
10.3 Javaをインストールしたのに古いバージョンが表示されます
PATHの優先順位で、別のJavaが先に見つかっている可能性が高いです。where java(Windows)や which java(macOS / Linux)で実体を確認してください。
10.4 複数バージョンのJavaを安全に使い分けられますか?
可能です。
ただし、「今どれが使われているか」を常に確認する運用が重要になります。
10.5 どのJavaバージョンを使うべきですか?
特別な指定がなければ、LTS(長期サポート)版を選ぶのが無難です。
プロジェクト要件がある場合は、それを最優先してください

