Java バージョン確認コマンド完全ガイド|java -version / javac -version【Windows・macOS・Linux対応】

目次

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 -versionjavac -version の違い(初心者が混乱しやすい点)

コマンド何を確認するか主な用途
java -version実行時のJavaアプリ実行・動作確認
javac -versionコンパイラ(JDK)開発・ビルド

よくある誤解として、

  • java -version が動く = 開発できる
    という認識がありますが、これは正しくありません
  • 実行だけ → java
  • 開発(コンパイル) → javac

この2つは役割が違うため、両方確認するのが基本です。

2.4 JDKに付属するツールで確認する方法(補足)

環境によっては、次のコマンドでもJDKのバージョンを確認できます。

jshell --version
  • jshellJDK 9以降で標準搭載されているツール
  • このコマンドが使える → JDKがインストールされている目安になる

ただし、基本は java -versionjavac -version を押さえておけば十分です。

2.5 まずはこの順番で確認するのがおすすめ

初心者の方は、次の順で確認すると混乱しにくくなります。

  1. java -version
    → 実行されるJavaのバージョンを確認
  2. javac -version
    → 開発用JDKが使えるか確認
  3. 想定と違えば、次のセクションで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 8
  • 21.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 とは何か(初心者向け整理)

javacJava 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 → 17
  • javac -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で確認する(基本)

まずは、最も基本的な方法です。

  1. コマンドプロンプト または PowerShell を起動
  2. 次のコマンドを実行
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での安全な確認手順まとめ

初心者の方は、次の順番で確認すると混乱しません。

  1. java -version
  2. javac -version
  3. where java
  4. echo %JAVA_HOME%

この4点がすべて整っていれば、
WindowsのJava環境は正しく構成されていると判断できます。

5.6 GUI(環境変数画面)での確認は最後でOK

Windowsには、環境変数をGUIで確認・編集する画面もありますが、

  • どのJavaが使われているか
  • なぜズレているか

を判断するには、コマンド結果の方が圧倒的に正確です。

GUIは「修正するとき」に使い、
確認は必ずコマンドで行う、というのが実務的な考え方です。

6. macOSでJavaのバージョンを確認する方法

このセクションでは、macOS環境でのJavaバージョン確認手順を解説します。
macOSはWindowsと違い、システム側がJDKを管理する仕組みがあるため、専用の確認方法を知っておくと混乱しません。

6.1 ターミナルで基本コマンドを確認する

まずは、macOSでも共通の基本コマンドから確認します。

  1. ターミナルを起動
  2. 次のコマンドを実行
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 -versionjava_home の結果が違う場合

次のような状況が起きることがあります。

  • /usr/libexec/java_home → Java 17
  • java -version → Java 11

この場合、考えられる原因は次の通りです。

  • シェルの設定(.zshrc / .bashrc)で JAVA_HOME を固定している
  • PATHに別のJavaが先に含まれている
  • Homebrew経由のJavaが優先されている

macOSでは、ユーザー設定が優先されるため、
シェル設定ファイルの影響を強く受けます。

6.5 macOSでの安全な確認手順まとめ

macOSでは、次の順番で確認すると整理しやすくなります。

  1. java -version
  2. javac -version
  3. /usr/libexec/java_home
  4. /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 17
  • java -version は Java 11

この場合、考えられる原因は次の通りです。

  • ユーザーのPATHに別のJavaが含まれている
  • /usr/local/bin などに手動配置されたJavaがある
  • sudo実行時と通常実行時でPATHが違う

Linuxでは、

  • システム設定
  • ユーザー環境

の両方が影響する点に注意が必要です。

7.5 Linuxでの安全な確認手順まとめ

Linux環境では、次の順番で確認すると整理しやすくなります。

  1. java -version
  2. javac -version
  3. which java
  4. update-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:javajavac のバージョンが違う

これは、JREとJDKが混在している典型例です。

  • 実行はできる
  • 開発やビルドで失敗する

という症状につながります。

対処の考え方

  • JDKを1つ基準に決める
  • javajavac を同じJDK配下に揃える

8.4 原因4:IDEやビルドツールが別JDKを使っている

  • ターミナルでは問題ない
  • IDEやCIではエラーが出る

という場合、IDE独自のJDK設定が原因のことがあります。

対処の考え方

  • IDEの設定画面で使用JDKを明示的に確認
  • 「自動検出任せ」にしない

9. 確認だけで終わらせないためのチェックリスト

最後に、Javaバージョン確認後にやるべきことを整理します。

9.1 実行だけが目的の場合

  • java -version が要件を満たしているか
  • アプリが正常に起動するか

9.2 開発・ビルドが目的の場合

  • javac -version が要件を満たしているか
  • javajavac のバージョンが一致しているか
  • JAVA_HOME と PATH が揃っているか

9.3 複数Javaを使い分ける場合

  • 今どのJavaが使われているかを毎回確認
  • OSごとの管理方法(macOS / Linux)を理解しておく

10. FAQ(よくある質問)

10.1 java -versionjavac -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(長期サポート)版を選ぶのが無難です。
プロジェクト要件がある場合は、それを最優先してください