本ページはプロモーションが含まれています

Java入門

Javaバージョン確認コマンド|Linux・Windows・Mac別

CATEGORY
REV.
DRAWN BY
TOM
SHEETS
9枚
java -version(OS別のバージョン確認)

トム

SESで約8年、環境を変えられないもどかしさの中にいました。32歳で自社開発企業に転職し、今はClaude Codeと自動化で、仕事も時間も組み直している途中です。
・Javaバックエンドエンジニア(Java歴12年以上)
・資格:基本情報技術者/応用情報技術者/Java Silver/Python3エンジニア認定基礎
詳細なプロフィール

𝕏

Javaのバージョン確認は、Linux・Windows・Macのどれでも java -version を実行するだけで完了します。

Linuxで複数のJDKがある場合は update-alternatives --list java(RHEL系は alternatives --display java)で一覧を確認できます。

「command not found」と出たら、Javaの未インストールかPATH未設定が原因です。

Javaのバージョン確認とは、PCに入っているJava(JDK・JRE・OpenJDK)の番号を java -version 等で調べる作業を指します。

この記事でわかること

  • OS別(Windows・Mac・Linux)のJavaバージョン確認コマンド
  • SDKMAN!/jEnv/環境変数によるバージョン切り替え方法
  • 「command not found」エラーの原因と対処法

PARTS LIST /目次

Javaバージョン確認コマンド早見表

まずは結論から。どのOSでも、基本は java -version の一発で確認できます。

OS起動するツール実行するコマンド
Windowsコマンドプロンプト / PowerShelljava -version
macOSターミナル.appjava -version
Linux端末(Terminal)java -version

コンパイラ側も同時に確認したい場合は javac -version を実行します。両者が一致していれば、実行環境とコンパイラが同じJDKを指している可能性が高いです。

JDK・JRE・JVMとは?バージョン確認で混同しやすい3つの違い

java -version と javac -version で結果が違う場合、確認しているものが異なっている可能性があります。

Javaの環境には JDK・JRE・JVM という3つの似た言葉があり、バージョン確認コマンドもこの違いに対応しています。

名称正式名称・役割バージョン確認コマンド
JVMJava Virtual Machine。コンパイル済みのJavaバイトコードを実行する仮想マシン本体単独では確認せず、java -version の出力に含まれる
JREJava Runtime Environment。JVMと標準ライブラリをまとめた「実行専用」の環境java -version
JDKJava Development Kit。JREに加えてコンパイラ(javac)等の開発ツールを含むjavac -version

開発者が普段インストールするのはJDKで、JDKの中にJRE・JVMが含まれています。java -version と javac -version の結果が食い違う場合、原因は主に2つです。複数のJDKがインストールされていて参照先がずれているケースと、実行用のJREだけが別途インストールされているケースです。次の「バージョンの違い早見表」と「OS別の確認手順」もあわせて確認してください。

Javaバージョンの違い早見表(LTS・最新版)

java -version で表示されたバージョンで何が使えるのかは、次の早見表で確認できます。LTS(長期サポート版)と、半年ごとの非LTS版の違いもあわせて整理しました。

バージョンリリース区分主な変更点
Java 82014年3月LTSラムダ式・Stream APIが導入。バージョン表記は 1.8.0_xxx 形式
Java 112018年9月LTSJava 9で導入されたモジュールシステム(JPMS)に加え、HTTP ClientがJava 11で標準化され、実務利用が広がった
Java 172021年9月LTSsealed classesが標準化。record・テキストブロック・switch式も使える
Java 212023年9月LTS仮想スレッド(Virtual Threads)、レコードパターン、switchのパターンマッチングが標準化
Java 252025年9月LTS(最新)コンパクトなソースファイルとインスタンスmainメソッド、モジュールインポート宣言、柔軟なコンストラクタ本体が標準化
Java 262026年3月非LTSHTTP ClientのHTTP/3対応、Applet APIの削除など
Java 272026年9月非LTS(最新)G1がすべての環境でデフォルトGCに、TLS 1.3のポスト量子ハイブリッド鍵交換、Compact Object Headersのデフォルト化など

非LTS版は次のバージョンが出ると更新が止まるため、業務で使うならLTS版が基本です。バージョン確認をした後は、「そのバージョンで何が使えるのか」まで把握しておくと、コードレビューや技術選定の場面で迷いません。

どれを入れるか迷ったら、プロジェクトの指定があればそのバージョンに合わせ、指定がなければ最新LTSのJava 25を選ぶのが基本です。各バージョンで追加された機能を年表で詳しく知りたい場合は、Javaの歴史を年表で解説した記事を参照してください。

Javaのバージョン確認が重要な理由

Javaのバージョンを把握しておくべき理由は、プロジェクトの不具合防止・セキュリティ対応・チーム開発でのトラブル回避の3つです。

  • プロジェクト不具合防止
  • セキュリティ・最新機能
  • チーム開発トラブル回避

プロジェクトでの不具合を防ぐため

Javaのバージョン確認が欠かせない理由の一つは、プロジェクトでの予期せぬ不具合を防げることです。

例えば、参加するプロジェクトが「Java 11」で開発されているとします。

もし開発環境が古い「Java 8」のままだった場合、コンパイルエラーになってしまいます。

理由は、Java 11で追加された新しい文法や機能(API)をコードが使っているためです。

逆に、環境が最新の「Java 17」で、プロジェクトが「Java 11」だった場合も注意が必要です。

Java 17で非推奨または削除された機能を使おうとすると、実行時にエラーが発生します。

プロジェクトが指定するJavaのバージョンと、開発環境のバージョンを正確に合わせることで、不具合を未然に防げます。

なお、Oracle JDKのライセンスにも注意が必要です。Oracle JDK 17のパーミッシブ・ライセンス(NFTC)による無償アップデートは2024年9月で終了済みです。以降の17.0.13以降はOTNライセンスとなり、本番利用は有償です。Oracle JDK 21も、2026年10月のCPU(Critical Patch Update)以降のリリースからOTNライセンスに切り替わる予定です(無償提供はこの時点で終了)。継続して無償アップデートを受けるには、Oracle JDK 25以降への移行が選択肢の一つです。もう一つの選択肢は、Eclipse Temurin等のOpenJDKディストリビューションへの切り替えです。

最新機能やセキュリティ更新の確認に役立つ

Javaは、現在も活発に開発が続けられているプログラミング言語です。

約半年ごとに新しいバージョンがリリースされ、新機能の追加やパフォーマンスの改善が行われています。

例えば、Java 8で導入された「ラムダ式」や「Stream API」は、Javaの書き方を大きく変えました。

最新のバージョン情報をキャッチアップしておくことで、より効率的でモダンなコードを書くスキルが身につきます。

また、バージョンアップには「セキュリティの脆弱性」の修正も含まれます。

自分のJavaが最新のセキュリティパッチを適用しているか確認するためにも、バージョン確認は大切です。

なお、Java 8はOracleの無償公開アップデートはすでに終了しています。一方でEclipse Temurin等のOpenJDKディストリビューションでは、2030年12月まで無償アップデートが提供されています。

チーム開発やツール連携でトラブルを避ける

現代の開発は、チームで行うのが一般的です。チーム全員が異なるJavaのバージョンを使っていたら、どうなるでしょうか。

「私の環境では動いたのに、あなたの環境では動かない」

このような問題が頻発し、開発効率が著しく低下します。チーム全員が使用するJavaのバージョンを統一することは、スムーズな共同作業の基本です。

こうした食い違いは、多くの場合CI(継続的インテグレーション)のビルドが通らない段階で初めて発覚します。ローカルでは動いていたコードがCI環境で失敗する原因の一部は、ローカルとCIコンテナのJavaバージョン不一致であることが少なくありません。

さらに、Java開発ではEclipseやIntelliJ IDEAといったIDE(統合開発環境)や、Maven、Gradleといったビルドツールを使います。IDEやビルドツールも、特定のJavaバージョンとの互換性に注意が必要です。

  • IDE(Eclipse・IntelliJ IDEA):プロジェクトのJavaバージョンと食い違うと、補完やビルドが正しく動きません
  • ビルドツール(Maven・Gradle):要求するJavaバージョンと実際にインストールされているバージョンが異なると、正しく動作しません

OS別Javaバージョン確認コマンドの実行手順

使用するコマンドは、基本的には共通です。

java -version

このコマンドは、現在「実行環境」として設定されているJava(JREまたはJDKの一部)のバージョンを表示します。

また、Javaのプログラムをコンパイル(コンピュータが理解できる形に変換)するためのバージョンを確認するコマンドもあります。

javac -version

java -version と javac -version の結果は、通常一致しているべきです。

もし異なっている場合、環境変数の設定に問題があるか、別のJDK・実行用のJREが先に参照されている可能性があります。

step
1
Windows

WindowsでのJavaバージョン確認コマンド

WindowsでJavaのバージョンを確認するには、「コマンドプロンプト」または「Windows PowerShell」を使います。

手順:
  1. コマンドプロンプト(またはPowerShell)の起動:
  • Windowsキー + Rキー を同時に押します。
  • 表示された「ファイル名を指定して実行」ダイアログに、コマンドプロンプトの場合は cmd、PowerShellの場合は powershell と入力します。Enterキーを押します。
  1. コマンドの入力:開いた黒い画面(ターミナル)に、以下のコマンドを入力し、Enterキーを押します。java -version
  2. 実行結果の確認:以下のように、インストールされているJavaのバージョン情報が表示されます。java version "25.0.4" 2026-07-21 LTS Java(TM) SE Runtime Environment (build 25.0.4+7-LTS) Java HotSpot(TM) 64-Bit Server VM (build 25.0.4+7-LTS, mixed mode, sharing) この例では、java version "25.0.4" と表示されており、Java 25(最新LTS)がインストールされていることがわかります。

同様に、javac -version も試してみましょう。

javac -version
javac 25.0.4

Windows 11でGUIからJavaバージョンを確認する方法

コマンドを使いたくない場合は、コントロールパネルからもJavaのバージョンを確認できます。

  1. 「スタート」をクリックし、画面右上の「すべて」をクリックします。
  2. 一覧の「J」欄から「Java」をクリックし、「Javaの構成」をクリックします。
  3. 「Javaコントロール・パネル」が表示されたら、「一般」タブの「バージョン情報」をクリックします。
  4. 「Javaについて」ダイアログにバージョンが表示されます。

ただし、この方法で確認できるのはJRE(実行環境)のバージョンです。また、「Javaコントロール・パネル」はJava 8のJREに付属するものです。そのため、Java 11以降のJDKだけをインストールした環境では、スタートメニューに表示されません。

JDKで開発している場合は、正確なバージョンを把握するために、上記のコマンドライン(java -version)での確認をおすすめします。

step
2
Mac

MacでのJavaバージョン確認コマンド

Mac(macOS)でJavaのバージョンを確認するには、「ターミナル」アプリを使います。

手順:
  1. ターミナル.appの起動
  • Commandキー + Spaceキー を同時に押して、Spotlight検索を開きます。
  • 「ターミナル」または「terminal」と入力し、表示された「ターミナル.app」を選択して起動します。
  • (または、Finderの「アプリケーション」>「ユーティリティ」フォルダの中にある「ターミナル.app」をダブルクリックします)
  1. コマンドの入力:開いたターミナル画面に、以下のコマンドを入力し、Enterキーを押します。java -version
  2. 実行結果の確認:Windowsと同様に、バージョン情報が表示されます。openjdk version "17.0.20" 2026-07-21 OpenJDK Runtime Environment (build 17.0.20+8-LTS) OpenJDK 64-Bit Server VM (build 17.0.20+8-LTS, mixed mode, sharing) この例では、OpenJDKのJava 17がインストールされていることがわかります。Macでも javac -version を実行して、コンパイラのバージョンも確認しておくと良いでしょう。javac -version ``javac 17.0.20

step
3
Linux

Linuxでのjavaバージョン確認(Ubuntu・RHEL系)

Linux(Ubuntu, AlmaLinux, Rocky Linuxなど)でも、Macと同様に「ターミナル」(端末)を使って確認します。

手順:
  1. ターミナルの起動:
  • デスクトップ環境(GNOME, KDEなど)のメニューから「端末」や「Terminal」を探して起動します。
  • 多くの場合、Ctrl + Alt + T のショートカットキーでも起動できます。
  1. コマンドの入力:ターミナル画面に、以下のコマンドを入力し、Enterキーを押します。java -version
  2. 実行結果の確認:実行結果が表示されます。openjdk version "1.8.0_312" OpenJDK Runtime Environment (build 1.8.0_312-b07) OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode) この例では、OpenJDKのJava 8(1.8.0)がインストールされていることがわかります。javac -version も忘れずに確認します。javac -version ``javac 1.8.0_312

UbuntuやRHEL系(AlmaLinux・Rocky Linux)で複数のJDKをパッケージから入れている場合は、update-alternatives コマンドが使えます。登録済みのJavaの一覧と、現在どれが使われているかを確認できます。

RHEL系の alternatives(update-alternatives はその別名)は --list に名前を付けられないので、Javaの一覧は alternatives --display java で確認します。

# 登録されているJavaの一覧を表示(Ubuntu/Debian)
update-alternatives --list java

# 使用するJavaを対話的に切り替える(RHEL系は alternatives --config java)
sudo update-alternatives --config java

# 実際に使われているjava本体のパスを確認
readlink -f "$(which java)"

どのバージョンのOpenJDKがパッケージとして入っているかを調べたいときは、dpkg(Debian/Ubuntu系)や rpm(RHEL系)で絞り込みます。JAVA_HOME が設定されているかも、あわせて確認しておくと切り分けが早くなります。

# Debian/Ubuntu系:インストール済みのOpenJDKパッケージを一覧
dpkg -l | grep -i openjdk

# RHEL系(AlmaLinux・Rocky Linux):インストール済みのOpenJDKパッケージを一覧
rpm -qa | grep -i openjdk

# JAVA_HOMEが設定されているか確認(空なら未設定)
echo "$JAVA_HOME"

EclipseでのJavaバージョン確認方法

複数のプロジェクトを並行して開発している場合、プロジェクトごとに異なるJavaバージョンが設定されているケースは珍しくありません。

Eclipseでは以下の方法で確認できます。

  • プロジェクト単位の確認: プロジェクトを右クリック →「プロパティ」→「Javaコンパイラー」で、そのプロジェクトが使用するJavaバージョンを確認できます
  • ワークスペース全体のデフォルトJDK:「ウィンドウ」→「設定」→「Java」→「インストール済みのJRE」を開きます。Eclipse全体のデフォルトJREを確認・変更できます
  • IntelliJ IDEAの場合:「File」→「Project Structure」→「Project SDK」でプロジェクトのJDKバージョンを確認します

Android StudioでのJavaバージョン確認方法

Android Studioでは、プロジェクトのビルドに使うJDKと、IDE自体が動作するJDK(JetBrains Runtime)は別に管理されています。この点に注意が必要です。

  • プロジェクトのJDKを確認する: 「File」→「Project Structure」→「SDK Location」を開きます。「JDK location」でビルドに使用するJDKのパスとバージョンを確認できます
  • Gradleが使うJDKを確認する: 「Settings」→「Build, Execution, Deployment」→「Build Tools」の順に開きます。「Gradle」タブの「Gradle JDK」欄でも確認できます

Android Studio付属のJDK(JetBrains Runtime)を使う場合と、システムに個別インストールしたJDKを使う場合があります。この2つではバージョン表示が異なることがあるため注意してください。

念のため、上記2箇所を両方確認しておくと安心です。

Javaのバージョンを切り替えるには?|SDKMAN!とjEnvの使い分け

開発現場では、複数のJavaバージョンを使い分ける場面がよくあります。一例が、「プロジェクトAではJava 8を、プロジェクトBではJava 11を使う」というケースです。

複数バージョンの共存(Windows・Mac・Linux)

PC内に複数のJavaバージョン(JDK: Java Development Kit)が共存していること自体は問題ありません。

別の例として、C:\Program Files\Java\ の中(Windowsの場合)や /Library/Java/JavaVirtualMachines/ の中(Macの場合)に、jdk-8 や jdk-11 のようなフォルダが複数存在する状態です。

Macの場合は、/usr/libexec/java_home -V というOS標準のコマンドで、インストール済みのJDKを一覧表示できます。実際に2つのJDK(OpenJDK 23.0.1、Amazon Corretto 21.0.5)が入った環境で動作を確認しました。-v オプションでJAVA_HOMEを切り替えると、java -version の出力もそのバージョンに追随します(2026年10月時点)。

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
    23.0.1 (arm64) "Oracle Corporation" - "OpenJDK 23.0.1" /Users/<ユーザー名>/Library/Java/JavaVirtualMachines/openjdk-23.0.1/Contents/Home
    21.0.5 (arm64) "Amazon.com Inc." - "Amazon Corretto 21" /Users/<ユーザー名>/Library/Java/JavaVirtualMachines/corretto-21.0.5/Contents/Home

$ export JAVA_HOME=$(/usr/libexec/java_home -v 21)
$ java -version
openjdk version "21.0.5" 2024-10-15 LTS
OpenJDK Runtime Environment Corretto-21.0.5.11.1 (build 21.0.5+11-LTS)
OpenJDK 64-Bit Server VM Corretto-21.0.5.11.1 (build 21.0.5+11-LTS, mixed mode, sharing)

問題は、java -version コマンドを実行したときに、OSが「どのJavaを使うか」を認識しているかです。

この「どのJavaを使うか」を指定するのが「環境変数」です。

環境変数(PATH)の設定で切り替える

OSは、コマンドが実行されたときに、「PATH」という環境変数に登録されているディレクトリを順番に探しに行き、最初に見つかった実行ファイルを使用します。

Pathの並び順で、使われるjavaが変わる(Windows)
BEFORE / インストーラが先頭に追加✕ javapath が上1. C:\Program Files\Common Files\Oracle\Java\javapath ← ここで見つかる
2. %JAVA_HOME%\bin ← ここまで探しに来ない
JAVA_HOMEを変えても、別の(古い)Javaが使われる
→
AFTER / 手動で優先順位を修正✓ %JAVA_HOME%\bin が上1. %JAVA_HOME%\bin(例: C:\Program Files\Java\jdk-11\bin)← ここで見つかる
2. javapath
JAVA_HOMEで指定したJDKのjavaが使われる
NOTEOSはPathを上から順に探し、最初に見つけたjavaを使います。Mac/Linuxの$PATHも左から順に探す仕組みは同じです。

また、Javaの場合は JAVA_HOME という環境変数が、使用するJDKを直接指定する役割を持ちます。

Javaのインストールディレクトリ(jdk-11 のフォルダなど)を指定するために使います。

Windowsの場合:

  1. 「システムのプロパティ」から「環境変数」を開きます。
  2. システム環境変数(またはユーザー環境変数)で、JAVA_HOME という変数を探します。
  3. JAVA_HOME の値を、使用したいJavaバージョンのインストールディレクトリ(例: C:\Program Files\Java\jdk-11)に変更します。
  4. 次に、環境変数 Path を編集します。Path の中にある %JAVA_HOME%\bin という記述が、他のJava(例: C:\Program Files\Common Files\Oracle\Java\javapath など)へのパスよりも「上」(優先度が高い位置)にあることを確認します。
  5. 設定を変更したら、開いているコマンドプロンプトをすべて閉じ、新しく開き直して java -version を実行します。

Mac/Linuxの場合:

  1. ホームディレクトリにある設定ファイル(.bash_profile, .zshrc など、使用しているシェルによって異なります)を開きます。
  2. ファイル内に、以下のような記述を追加または修正します。export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATH (※ JAVA_HOME に設定するパスは、ご自身の環境のJDKインストールパスに合わせてください)
  3. ファイルを保存し、ターミナルで source ~/.zshrc (ファイル名が .zshrc の場合)を実行するか、ターミナルを再起動します。
  4. java -version を実行して、バージョンが切り替わったことを確認します。

この方法は確実ですが、切り替えるたびに設定ファイルを編集する必要があり、少々面倒です。

SDKMAN!やjEnvで管理する

MacやLinuxユーザーであれば、SDKMAN! や jEnv といった「バージョン管理ツール」を使うことを強くおすすめします。

SDKMAN! の場合:

SDKMAN! は、Javaだけでなく、GroovyやKotlinなど、多くのJVM(Java仮想マシン)関連のSDKを管理できるツールです。

  • インストール後、利用可能なJavaのバージョン一覧を表示sdk list java
  • 特定のバージョンをインストールsdk install java 25.0.4-tem
  • 使用するバージョンを切り替えるsdk use java 25.0.4-tem (このターミナルセッションでのみ切り替わります)
  • デフォルトで使用するバージョンを指定sdk default java 25.0.4-tem

コマンド数回で簡単にJavaのインストールと切り替えができます。

jEnv の場合:

jEnv は、Java専用のバージョン管理ツールです。

  • インストールされているJavaを追加jenv add /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
  • 使用するバージョンを切り替えるjenv global 11.0

SDKMAN!やjEnvを使えば、JAVA_HOME や PATH の設定を直接編集する手間が省け、プロジェクトごとにJavaのバージョンを簡単に切り替えられます。

  • SDKMAN!:第一選択としておすすめです。インストールからバージョン切り替えまでを1つのツールで完結でき、プロジェクトごとに .sdkmanrc ファイルで自動切り替えも可能です
  • jEnv:既にJDKがインストール済みの環境でバージョンだけ切り替えたい場合に便利ですが、JDKのインストール自体は別途行う必要があります

なお、GitHub Actions等のCI環境では、ローカルのSDKMAN!/jEnv設定は引き継がれません。actions/setup-java のようなアクションを使い、Javaバージョンをワークフローファイル内に明示的に指定しましょう。ローカルの .sdkmanrc と同じバージョンを指定しておけば、ローカル・CI間のバージョン食い違いを防げます。

ここで注意したいのが、PATHの優先順位に起因する落とし穴です。SDKMAN!やjEnvで切り替えたつもりでも切り替わらない場合、原因の多くは次の2つです。

  • 古い JAVA_HOME の指定が残っている:.bashrc や .zshrc に古い JAVA_HOME を直接指定する記述が残っていて、そちらが優先されてしまう
  • シェルの再起動漏れ:切り替えコマンドを実行した後にシェルを再起動しないと、多くのシェルでは変更が反映されない

切り替えが反映されているか不安なときは、which java(Windowsなら where java)で実際に使われているパスを確認するのが確実です。

なお、近年は Java 専用ツールだけでなく、複数の言語ランタイムを統一的に管理できる mise(旧rtx)や asdf を選ぶ開発者も増えています。

Python・Node.js・Goなどと併用する場合は、こちらの方が学習コストを抑えられます。

Javaのバージョンをアップデートする方法

javaバージョンの確認ができたら、次に気になるのが最新版へのアップデートです。ただし、アップデート後も古いJAVA_HOMEやPATHの設定が残っていると、java -versionの結果と実際にビルドで使われるJDKがずれることがあるため注意が必要です。

  • Windows:Oracle公式サイトまたはOpenJDKの最新インストーラーをダウンロードして再インストールします。winget upgrade Oracle.JDK.21 のように winget 経由でも更新できます
  • Mac:Homebrewを使っている場合は brew upgrade openjdk で更新できます
  • Linux:パッケージマネージャー経由(Ubuntu/Debian系は sudo apt update && sudo apt upgrade openjdk-21-jdk、RHEL系は sudo dnf upgrade java-21-openjdk)で更新します
  • SDKMAN!利用時:sdk upgrade java で管理中のバージョンをまとめて更新できます

アップデート後は java -version で反映を確認し、プロジェクトの pom.xml や build.gradle が指定するJavaバージョンと食い違っていないかもあわせて確認しておくと安心です。

java -versionでエラーが出たらどうする?原因と対処法

java -version を実行したときに、バージョン情報がうまく表示されず、エラーになることもあります。

また、エラーにはならなくても、複数のJavaバージョンをインストールした環境では注意が必要です。java -version が返すバージョンと、Maven・Gradleなどのビルドツールが実際に使用しているJDKのバージョンが食い違っていることがあります。

ビルドが想定と違う挙動をする場合は、コマンドラインでの確認だけでは不十分です。ビルドツール側の設定(Maven なら pom.xml の maven.compiler.source、Gradle なら build.gradle の sourceCompatibility やGradle自体が使うJDK)も合わせて確認しましょう。

java -version がうまくいかないときの切り分けの流れを図にすると、次のようになります。

java -version がうまくいかないときの切り分け(Q1から順に答える)
QUESTION / 質問
はい
いいえ
Q1. java -version でバージョンが表示された?いいえ=「command not found」「認識されていません」
Q3へ
Q2へ
Q2. JDKのフォルダは存在する?C:\Program Files\Java や /Library/Java/JavaVirtualMachines を確認
JAVA_HOMEを設定し、PATHにJDKのbinを追加JAVA_HOMEはbinを含めずJDKのルートを指定
JDKをインストールするEclipse Temurin・Amazon Correttoなど。JREではなくJDKを選ぶ
Q3. 想定したバージョン?
確認完了
which java / where java で実際のパスを確認し、PATHの優先順位や SDKMAN!・jEnv の設定を見直す.zshrc等に残った古いJAVA_HOMEやjavapathが先に来ていないか
NOTE設定を変えたら、ターミナルを開き直して再実行します。開いたままの画面には新しい設定が反映されません。確認完了のあとは、javac -version も同じバージョンか確認しておくと安心です。

「java: command not found」と表示された場合

java -version を実行して、以下のようなエラーメッセージが表示された場合の対処法です。

bash: java: command not found

または

'java' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

このエラーは、2つの原因が考えられます。

原因1:Java(JDK)がPCにインストールされていない

そもそもJavaがインストールされていなければ、java コマンドは実行できません。

特にPCを購入した直後や、クリーンインストールした直後は、Javaが入っていないことがほとんどです。

対処法:

JDKの入手先はいくつかあります。代表的なのは、Oracleの公式サイト、Eclipse Temurin(旧AdoptOpenJDK)、Amazon Correttoです。ダウンロードしてインストールしてください。

プログラミングを行う場合は、JRE(Java Runtime Environment)だけではなく、JDKをインストールしてください。

原因2:Javaはインストールされているが、パス(PATH)が通っていない

Javaはインストールしたものの、OSが java コマンドの場所(java.exe などの実行ファイルがある場所)を知らない状態です。

対処法:

「Javaのバージョン切り替え」で説明した「環境変数(PATH)の設定」を正しく行ってください。

JAVA_HOME を設定してください。あわせて、Path 環境変数も確認します。%JAVA_HOME%\bin(Windows)または $JAVA_HOME/bin(Mac/Linux)が追加されているかを確認し、なければ追加してください。

パス設定のミスを確認する方法

パス設定がうまくいかない場合、以下の点を確認してみましょう。

  • JAVA_HOME のパスが正しいか?C:\Program Files\Java\jdk-11 のように、JDKのルートディレクトリを指していますか? C:\Program Files\Java\jdk-11\bin のように bin まで含めると失敗します。Path の設定 (%JAVA_HOME%\bin) と食い違い、結果として ...jdk-11\bin\bin を探しに行くことになるためです。
  • Path の設定は正しいか?Path には、%JAVA_HOME%\bin と記述してください。単に %JAVA_HOME% だけでは、OSは bin フォルダの中を探してくれません。
  • 環境変数の設定を反映させたか?Windowsで環境変数を設定した後、コマンドプロンプトを再起動しないと、古い設定が使われ続けます。必ずターミナルやコマンドプロンプトは開き直してください。
  • 他のJavaのパスが優先されていないか?Path 環境変数は、上から(または左から)順に参照されます。%JAVA_HOME%\bin よりも前に、別の(古い)Javaへのパスがないか確認してください。該当するのは C:\Program Files\Common Files\Oracle\Java\javapath などです。先に記述されていると、そちらが優先されてしまいます。新しく設定したパスが、最も優先される位置にあるか確認してください。

実務でよくあるのが、Oracle JDKのインストーラが自動追加する C:\Program Files\Common Files\Oracle\Java\javapath が PATH の先頭に来てしまうケースです。

手動で設定した JAVA_HOME が反映されないときは、まずこのパスの優先順位を確認しましょう。

Windowsの場合、where java コマンドで実際にどの java.exe が使われているかを特定できます。

Javaが正しくインストールされているか確認する

インストール自体がうまくいっていない可能性もあります。

  • インストールディレクトリの確認:標準的なインストール先ディレクトリを確認します。Windowsなら C:\Program Files\Java、Macなら /Library/Java/JavaVirtualMachines です。該当するJDKのフォルダが存在するかを見ます。
  • 再インストール:設定を見直しても解決しない場合、一度Javaをアンインストールし、PCを再起動してから、再度インストールを試みるとうまくいくことがあります。インストーラが環境変数の設定を自動で行ってくれる場合もあります。

バージョン確認ができない原因の多くは「インストールされていない」か「パスが通っていない」のどちらかです。

Javaバージョン確認のよくある質問(FAQ)

Javaのバージョン確認コマンドについて、よく聞かれる質問をまとめました。

Q1. java -versionとjavac -versionの違いは?

A1. java -version はJRE(Java実行環境)のバージョンを表示し、javac -version はJDK(Java開発キット)に含まれるコンパイラのバージョンを表示します。開発を行う場合は両方のバージョンが一致していることを確認しましょう。javac が見つからない場合はJDKがインストールされていない可能性があります。

Q2. Javaのバージョン番号の読み方は?

A2. Java 9以降は「メジャー.マイナー.パッチ」形式(例: 17.0.5 = Java 17)です。Java 8以前は「1.X.0_YYY」形式で、1.8.0_312 はJava 8のアップデート312を意味します。2026年9月時点のLTS(長期サポート版)は Java 8 / 11 / 17 / 21 / 25 の5バージョンです。

Q3. java -versionとjava --versionの違いは?

A3. java -version(ハイフン1つ)は標準エラー出力(stderr)にバージョン情報を出力します。java --version(ハイフン2つ)はJava 9以降で追加されたオプションで、標準出力(stdout)に人間が読みやすい形式で出力します。スクリプトでバージョンを取得する場合は出力先の違いに注意が必要です。実際に java -version 1>/dev/null と標準出力だけを捨てて実行してもバージョン情報はそのまま表示され、java --version 1>/dev/null では何も表示されないことで、この違いを確認できます。

Q4. Windows 11でJavaのバージョンを確認するには?

A4. コマンドプロンプトかPowerShellで java -version を実行するのが最も確実です。GUIから確認したい場合は、「スタート」→「すべて」→「Java」→「Javaの構成」→「バージョン情報」からも確認できます。

Q5. 「java: command not found」への対処法は?

A5. 多くの場合、JDKが未インストールか、PATHに java コマンドが登録されていないことが原因です。JDKをインストールした上で、環境変数PATHに bin ディレクトリを追加してください。

Q6. SDKMAN!とjEnv、どちらを使うべき?

A6. これからJavaのインストールも含めて管理したいならSDKMAN!、既にJDKがインストール済みで切り替えだけしたいならjEnvがおすすめです。SDKMAN!は1つのツールでインストールから切り替えまで完結できます。

Q7. Windowsで複数のJavaバージョンを共存させられる?

A7. はい、できます。JDKごとに別のフォルダへインストールし、使いたいJDKのフォルダを環境変数JAVA_HOMEに指定して、Pathの%JAVA_HOME%\binを他のJavaより上に置けば切り替えられます。Mac/LinuxではSDKMAN!やjEnvで、プロジェクトごとに使い分けられます。

あわせて読む

まとめ:開発環境に合ったJavaバージョンを把握しよう

Javaのバージョン確認は、安定した開発環境を維持するための基本中の基本です。

  • java -version コマンドで、現在のバージョンを簡単に確認できます。
  • プロジェクトの要求バージョンと自分の環境を合わせることが、不具合を防ぐ鍵です。
  • SDKMAN! などのバージョン管理ツールを使うと、複数のバージョンの切り替えが格段に楽になります。
  • 「command not found」エラーが出たときは、インストールと「PATH」設定を疑いましょう。

チーム開発では、READMEやプロジェクトのドキュメントに使用するJavaバージョンを明記しましょう。

SDKMAN!なら .sdkmanrc、jEnvなら .java-version のファイルをリポジトリに含めておくと、新メンバーの環境構築がスムーズになります。

開発プロジェクトに参加する前、あるいは新しいツールを導入する前には、必ずJavaのバージョンを確認する習慣をつけましょう。

REVISIONS / 改訂履歴
REV.DATE内容
82026-10-21同じ説明の繰り返しを減らし、読みやすく整えた
72026-10-19Java 27の情報に更新し、バージョンのアップデート手順を追加
62026-10-15図解を描き直し(図面のデザインにそろえた)
52026-10-022026年10月時点の情報で全体を見直し
… ほか3回の改訂
12025-11-06初版
NEXT READ本棚から1本

AIで開発を組み直すなら、まずこの5冊から

入門・実践・設計まで、Claude Codeの本をレベル別に5冊選んで比べました。

→ おすすめ5冊を見る

  • この記事を書いた人
  • 最新記事

トム

SESで約8年、環境を変えられないもどかしさの中にいました。32歳で自社開発企業に転職し、今はClaude Codeと自動化で、仕事も時間も組み直している途中です。
・Javaバックエンドエンジニア(Java歴12年以上)
・資格:基本情報技術者/応用情報技術者/Java Silver/Python3エンジニア認定基礎
詳細なプロフィール

𝕏

Java入門