- JAVA
Java 25インストール(Windows)|JDK 25/27とJAVA_HOME
2026年10月時点で、Windows に新しく Java を入れるなら、長期サポート版(LTS)の JDK 25 が第一候補です。 いちばん手早いのは PowerShell で winget install EclipseAdoptium.Temurin.25.JDK を実行する方法で、入れた後に新しいターミナルを開き、java -version と javac -version で確かめます。2026年9月15日に出た JDK 27 は、半年で更新が終わる非LTS版です。
どれを入れるべきか(判断表)
| あなたの状況 | 入れる版 | 理由 |
|---|---|---|
| これから Java を学ぶ・新しく作る | JDK 25(LTS) | 更新が長く続く最新のLTS。教材や IDE も対応している |
| 開発中のアプリや研修が版を指定している | 指定の版(21・17 など) | ビルドの設定と実行する版をそろえる |
| 最新の言語機能・プレビュー機能を試したい | JDK 27(非LTS) | 2027年3月ごろに JDK 28 が出ると更新が終わる |
| Minecraft など、アプリが Java を求めている | アプリが指定する版 | 版が違うと起動しないことがある |
| JDK 26 を入れている | 25 か 27 に移る | JDK 26 は2026年9月で更新が終わった |
| 版 | 種類 | 公開 | Oracle の更新期限(Premier) | Temurin の提供期限 |
|---|---|---|---|---|
| JDK 25 | LTS | 2025年9月 | 2030年9月 | 少なくとも2031年9月 |
| JDK 27 | 非LTS | 2026年9月 | 2027年3月 | 2027年3月 |
| JDK 26 | 非LTS | 2026年3月 | 2026年9月(終了) | 2026年9月(終了) |
| JDK 21 | LTS | 2023年9月 | 2028年9月 | 少なくとも2029年12月 |
| JDK 17 | LTS | 2021年9月 | 2026年9月(終了) | 少なくとも2027年10月 |
LTS(Long-Term Support)は、セキュリティ修正などの更新が長く提供される版です。非LTSは次の版が出ると更新が止まるため、学習や業務の基盤には LTS が向いています。Temurin の期限は Adoptium のリリースロードマップ、Oracle の期限は Java SE Support Roadmap の値です。各版の違いとサポート期限は関連記事「Javaバージョン一覧【2026年】LTSのサポート期限とJava 27・28」で、JDK 27 で増えた機能は関連記事「Java 27の新機能まとめ|値クラス(Valhalla)も解説」で扱っています。
3つの入れ方の早見表
| 入れ方 | コマンド・操作 | JAVA_HOME | 向いている場面 |
|---|---|---|---|
| winget | winget install EclipseAdoptium.Temurin.25.JDK |
Temurin・Microsoft はマニフェストの指定で設定される | いちばん手早い。更新も winget upgrade |
| MSI | ダウンロードした .msi をダブルクリック |
「Set JAVA_HOME variable」を選ぶと設定 | 画面で確かめながら入れたい |
| ZIP | 展開して、JAVA_HOME と PATH を自分で設定 | 自分で設定 | 管理者権限がない、複数の版を並べたい |
確認環境:Temurin 25.0.4.1+1 と Temurin 27+35 の Linux x64 版(GitHub のリリースから取得)、Ubuntu 24.04 の OpenJDK 8・11・17・21・25、Gradle 8.14.3 で、版の確認・class file version の確認・エラーの再現・切り替えの手順を実行しました。Windows 用 ZIP(OpenJDK25U-jdk_x64_windows_hotspot_25.0.4.1_1.zip)は中身の構成と release ファイルを確かめました。winget のパッケージ ID は winget の公式リポジトリ(microsoft/winget-pkgs)の manifests を2026年10月16日時点で確かめ、Windows の画面操作・setx・PowerShell は Microsoft・Oracle・Adoptium の公式ドキュメント、Maven のエラー文は Maven 3.9 系のソース(mvn.cmd)で確かめました(確認日 2026年10月16日)。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「Java 25インストール(Windows)|JDK 25/27とJAVA_HOME」
Java 25(JDK 25)のダウンロード先と配布元の比較
Java の中身(OpenJDK)は同じでも、ビルドして配布している組織が複数あります。機能の差はほとんどなく、違いはライセンス・更新の提供期間・インストーラの作りです。
| 配布元 | ライセンス | JDK 25 の更新期限 | winget ID(JDK 25) | ダウンロード先 |
|---|---|---|---|---|
| Eclipse Temurin(Adoptium) | GPLv2+Classpath Exception(無償) | 少なくとも2031年9月 | EclipseAdoptium.Temurin.25.JDK |
adoptium.net |
| Microsoft Build of OpenJDK | GPLv2+Classpath Exception(無償) | 2030年9月(最短の目標) | Microsoft.OpenJDK.25 |
learn.microsoft.com/java/openjdk |
| Amazon Corretto | GPLv2+Classpath Exception(無償) | 2032年10月 | Amazon.Corretto.25.JDK |
aws.amazon.com/corretto |
| Liberica JDK(BellSoft) | GPLv2+Classpath Exception(無償。商用サポートは有償) | 商用サポート 2034年3月 | BellSoft.LibericaJDK.25 |
bell-sw.com |
| Oracle JDK | NFTC(無償の条件で商用も可)。2028年9月より後の更新は OTN | Premier 2030年9月 | Oracle.JDK.25 |
oracle.com/java |
Oracle JDK のライセンスは版と時期で変わります。 Oracle の Java SE Support Roadmap では、JDK 25 は NFTC(No-Fee Terms and Conditions)で提供され、2028年9月より後の更新は OTN ライセンスになる予定です。JDK 21 は、2026年10月の更新(CPU)から OTN ライセンスに移る予定と書かれています。会社で使う場合は、組織のルールと Oracle の最新の案内に合わせて選びます。
| こんなとき | 選ばれることが多い配布元 |
|---|---|
| 迷ったとき・学習用 | Eclipse Temurin(無償、Windows・Mac・Linux 共通) |
| ARM 版 Windows(Snapdragon 搭載 PC など) | Microsoft Build of OpenJDK、Liberica(winget に arm64 版がある) |
| AWS 上で動かすアプリ | Amazon Corretto |
| Azure 上で動かすアプリ | Microsoft Build of OpenJDK |
| Oracle の有償サポートを使う組織 | Oracle JDK |
| チームで配布元が決まっている | チームの指定(版と配布元をそろえると差が出にくい) |
方法1:winget でインストールする
winget は、Windows 10・11 に入っているパッケージマネージャーです。PowerShell かコマンドプロンプトで実行します。
# 候補を探す
winget search Temurin
# Eclipse Temurin JDK 25 を入れる
winget install --id EclipseAdoptium.Temurin.25.JDK -e
# 入っているものを見る・更新する・削除する
winget list Temurin
winget upgrade --id EclipseAdoptium.Temurin.25.JDK -e
winget uninstall --id EclipseAdoptium.Temurin.25.JDK -e
-e(--exact)は ID の完全一致で探す指定です。
winget のパッケージ ID 一覧(2026年10月16日時点)
winget の公式リポジトリ(microsoft/winget-pkgs)の manifests フォルダで確かめた ID です。
| 配布元 | JDK 25 の ID | 登録されている最新 | arm64 | JDK 27 の ID |
|---|---|---|---|---|
| Eclipse Temurin | EclipseAdoptium.Temurin.25.JDK |
25.0.4.101(25.0.4.1+1) | なし(x64のみ) | 未登録(26 まで) |
| Microsoft | Microsoft.OpenJDK.25 |
25.0.4.101 | あり | 未登録(25 まで) |
| Amazon Corretto | Amazon.Corretto.25.JDK |
25.0.4.10 | なし(x64のみ) | Amazon.Corretto.27.JDK |
| Liberica JDK | BellSoft.LibericaJDK.25 |
25.0.4.101 | あり | 未登録(26 まで) |
| Oracle JDK | Oracle.JDK.25 |
25.0.4.1 | なし(x64のみ) | 未登録(26 まで) |
- ID の形は配布元ごとに違います。 Temurin と Corretto は
.25.JDK、Microsoft・Liberica・Oracle は.25で終わります。Temurin には JRE だけのEclipseAdoptium.Temurin.25.JREもあります(開発には JDK を選びます)。 - JDK 27 は、この時点で winget に登録されていたのは Corretto だけでした。Temurin 27 などは、公式サイトの MSI か ZIP で入れます。
- 版の数字(25.0.4.101 など)は winget 上の番号で、
25.0.4.1+1のような Java の版を数字だけで表したものです。
winget で入れたときの JAVA_HOME
マニフェストに書かれたインストーラの指定は次のとおりでした。
| ID | インストーラに渡す指定 | JAVA_HOME |
|---|---|---|
EclipseAdoptium.Temurin.25.JDK |
ADDLOCAL=ALL(すべての機能) |
すべての機能に FeatureJavaHome(JAVA_HOME の設定)が含まれる |
Microsoft.OpenJDK.25 |
ADDLOCAL=FeatureMain,FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome |
設定される |
Oracle.JDK.25 |
既定のインストール先 %ProgramFiles%\Java\jdk-25 を指定 |
Oracle のガイドに JAVA_HOME の設定の記載はない |
どの場合も、入れた後に新しいターミナルを開いて echo %JAVA_HOME%(PowerShell は $env:JAVA_HOME)を確かめ、空なら後述の手順で設定します。
方法2:MSI インストーラでインストールする
ここでは Eclipse Temurin を例にします。
- adoptium.net の Temurin のダウンロードページを開く
- Operating System:Windows、Architecture:x64、Package Type:JDK、Version:25 - LTS を選ぶ
.msiをダウンロードする(2026年10月16日時点のファイル名はOpenJDK25U-jdk_x64_windows_hotspot_25.0.4.1_1.msi)- ダブルクリックし、「Custom Setup」で機能を選ぶ
Adoptium のドキュメントにある機能と既定値です。
| 機能 | 内容 | 既定 |
|---|---|---|
| FeatureMain | JDK 本体 | 有効 |
| FeatureEnvironment | PATH に追加 | 有効 |
| FeatureJarFileRunWith | .jar を Java に関連付け |
有効 |
| FeatureJavaHome | JAVA_HOME を設定 | 無効 |
| FeatureOracleJavaSoft | レジストリ(HKLM\SOFTWARE\JavaSoft)を更新 | 無効 |
画面の「Set JAVA_HOME variable」を「Will be installed on local hard drive」に変えると、JAVA_HOME も設定されます。 既定のインストール先は C:\Program Files\Eclipse Adoptium\ の下で、フォルダ名は jdk-25.0.x.x-hotspot のように版の番号を含みます。
コマンドで入れる場合は、Adoptium のドキュメントの例のとおり ADDLOCAL で機能を指定します(管理者のコマンドプロンプトで実行)。
msiexec /i OpenJDK25U-jdk_x64_windows_hotspot_25.0.4.1_1.msi ADDLOCAL=FeatureMain,FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome INSTALLDIR="C:\Program Files\Temurin\" /quiet
Temurin の MSI は Windows x64 用です(Adoptium のドキュメント)。ARM 版 Windows では、Microsoft Build of OpenJDK などの arm64 版を使います。
Oracle JDK 25 の MSI
Oracle のインストールガイドでは、JDK 25 の既定のインストール先は C:\Program Files\Java\jdk-25 で、最新の JDK 25 を指すジャンクション C:\Program Files\Java\latest\jdk-25 も作られます。
rem 画面を出さずに入れる(管理者で実行)
msiexec.exe /i jdk-25_windows-x64_bin.msi /qn
主な配布元のインストール先(例)
| 配布元 | インストール先の例 |
|---|---|
| Eclipse Temurin | C:\Program Files\Eclipse Adoptium\jdk-25.0.x.x-hotspot |
| Oracle JDK | C:\Program Files\Java\jdk-25 |
| Microsoft Build of OpenJDK | C:\Program Files\Microsoft\jdk-25.0.x.x-hotspot |
| Amazon Corretto | C:\Program Files\Amazon Corretto\jdk25.0.x_x |
JAVA_HOME には「bin の1つ上のフォルダ」を指定します。 エクスプローラーでインストール先を開き、bin の中に java.exe と javac.exe があることを確かめておくと、後の設定で迷いません。
方法3:ZIP を展開してインストールする
ZIP 版は、展開するだけで使えます。管理者権限がない PC や、複数の版を並べて使いたいときに向いています。Temurin 25 の Windows 用 ZIP(OpenJDK25U-jdk_x64_windows_hotspot_25.0.4.1_1.zip、約141MB)の中身は次の構成でした。
jdk-25.0.4.1+1/
jdk-25.0.4.1+1/bin/java.exe
jdk-25.0.4.1+1/bin/javac.exe
jdk-25.0.4.1+1/bin/javaw.exe
jdk-25.0.4.1+1/bin/jshell.exe
jdk-25.0.4.1+1/release
同梱の release ファイル(版の情報)の先頭です。
IMPLEMENTOR="Eclipse Adoptium"
IMPLEMENTOR_VERSION="Temurin-25.0.4.1+1"
JAVA_RUNTIME_VERSION="25.0.4.1+1-LTS"
JAVA_VERSION="25.0.4.1"
JAVA_VERSION_DATE="2026-08-18"
OS_ARCH="x86_64"
OS_NAME="Windows"
PowerShell で展開し、ユーザー環境変数に設定する例です(管理者権限は要りません)。
# 展開先(ユーザーのフォルダの下)
$dest = "$env:USERPROFILE\jdk"
New-Item -ItemType Directory -Force $dest | Out-Null
Expand-Archive -Path "$env:USERPROFILE\Downloads\OpenJDK25U-jdk_x64_windows_hotspot_25.0.4.1_1.zip" -DestinationPath $dest
# JAVA_HOME と PATH(ユーザー環境変数)
$jdk = "$dest\jdk-25.0.4.1+1"
[Environment]::SetEnvironmentVariable("JAVA_HOME", $jdk, "User")
$userPath = [Environment]::GetEnvironmentVariable("Path", "User")
[Environment]::SetEnvironmentVariable("Path", "$jdk\bin;$userPath", "User")
ZIP 版は自動では更新されません。新しい版が出たら、新しいフォルダに展開して JAVA_HOME と PATH を書き換えます。
JAVA_HOME と PATH を設定する
| 環境変数 | 役割 | 使うもの |
|---|---|---|
| PATH | コマンド名(java・javac)を探すフォルダの一覧。上から順に探す |
コマンドプロンプト・PowerShell |
| JAVA_HOME | JDK のフォルダの場所 | Maven・Gradle・IDE・各種ツール |
PATH は「java と打ったときにどの java.exe を動かすか」を、JAVA_HOME は「ツールがどの JDK を使うか」を決めます。 両方そろえておくと、コマンドとツールで使う JDK が一致します。
方法A:GUI で設定する(Windows 11)
- スタートメニューの検索で「環境変数」と入力し、「システム環境変数の編集」(または「環境変数を編集」)を開く
- 「環境変数(N)...」ボタンを押す
- 上段「ユーザー環境変数」の「新規(N)...」で、変数名
JAVA_HOME、変数値に JDK のフォルダ(例:C:\Program Files\Eclipse Adoptium\jdk-25.0.x.x-hotspot)を入れる。「ディレクトリの参照」で選ぶと入力ミスを防げる - 上段の「Path」を選んで「編集(E)...」→「新規(N)」で
%JAVA_HOME%\binを追加する - 「上へ(U)」で
%JAVA_HOME%\binを一番上に移す - すべての画面で「OK」を押して閉じる
| 種類 | 効く範囲 | 管理者権限 |
|---|---|---|
| ユーザー環境変数(上段) | 自分のアカウントだけ | 要らない |
| システム環境変数(下段) | PC の全ユーザー | 要る |
Windows はコマンドを探すとき、システムの Path の後ろにユーザーの Path をつなげた順に探します。 システム側に別の Java(後述の javapath など)があると、ユーザー側の設定より先に見つかります。その場合はシステム環境変数の Path で順番を入れ替えます。
方法B:PowerShell で設定する
.NET の [Environment]::SetEnvironmentVariable を使います。第3引数が "User" ならユーザー環境変数(レジストリの HKEY_CURRENT_USER\Environment)、"Machine" ならシステム環境変数で、Machine は管理者の PowerShell で実行します。Microsoft のドキュメントでは、User・Machine への設定は WM_SETTINGCHANGE で他のアプリにも通知されると説明されています。
# JDK のフォルダ(実際のフォルダ名に合わせる)
$jdk = "C:\Program Files\Eclipse Adoptium\jdk-25.0.x.x-hotspot"
# JAVA_HOME(ユーザー環境変数)
[Environment]::SetEnvironmentVariable("JAVA_HOME", $jdk, "User")
# ユーザーの Path の先頭に JDK の bin を追加
$userPath = [Environment]::GetEnvironmentVariable("Path", "User")
[Environment]::SetEnvironmentVariable("Path", "$jdk\bin;$userPath", "User")
# 今開いている PowerShell にも反映する(新しいウィンドウでは不要)
$env:JAVA_HOME = $jdk
$env:Path = "$jdk\bin;$env:Path"
スクリプトでは、Path に %JAVA_HOME%\bin ではなく展開済みの実際のパスを書いています。%JAVA_HOME% を文字のまま書き込むと、値の種類によっては展開されずに残ることがあるためです。GUI で設定する場合は %JAVA_HOME%\bin のままで使えます。
方法C:setx で設定する(コマンドプロンプト)
rem ユーザー環境変数
setx JAVA_HOME "C:\Program Files\Eclipse Adoptium\jdk-25.0.x.x-hotspot"
rem システム環境変数(管理者で実行)
setx JAVA_HOME "C:\Program Files\Eclipse Adoptium\jdk-25.0.x.x-hotspot" /m
Microsoft の setx のドキュメントには、次の3点が書かれています。
| setx の仕様 | 起きること |
|---|---|
| 設定は「これから開くウィンドウ」から有効 | 実行したウィンドウでは echo %JAVA_HOME% が変わらない |
| 値は1024文字まで。超えると切り詰めて書き込む | 長い Path を setx PATH ... で書くと、後ろが消えることがある |
既存の変数に使うと、%JAVA_HOME% などの参照を展開した値で保存する |
後で JAVA_HOME を変えても Path に反映されなくなる |
このため、JAVA_HOME は setx で設定し、Path は GUI か PowerShell で編集するのが安全です。setx PATH "%JAVA_HOME%\bin;%PATH%" の形は、%PATH% にシステムとユーザーの Path がつながった値が入るため、ユーザーの Path にシステム側の内容が重複して書き込まれます。
| 方法 | 向いている場面 | 反映されるタイミング |
|---|---|---|
| GUI | 1台の PC で初めて設定する | 新しく開いたターミナル・アプリ |
PowerShell SetEnvironmentVariable |
手順を記録したい、複数台に同じ設定をする | 新しく開いたターミナル($env: で今のウィンドウにも反映) |
setx |
JAVA_HOME だけを手早く設定する | 新しく開いたターミナル |
インストールを確認する(コマンドと出力)
設定のあとは、新しいコマンドプロンプト(または PowerShell)を開いて確認します。
| 確認すること | コマンドプロンプト | PowerShell |
|---|---|---|
| 実行される java の版 | java -version |
java -version |
| JDK(javac)に PATH が通っているか | javac -version |
javac -version |
| どの java.exe が使われるか | where java |
where.exe java または Get-Command java -All |
| JAVA_HOME | echo %JAVA_HOME% |
$env:JAVA_HOME |
PowerShell で where と打つと Where-Object の別名として扱われるため、where.exe と書きます。
Temurin 25.0.4.1+1 の java -version の出力です(Linux x64 版で実行。Windows 版も release ファイルの版は同じ Temurin-25.0.4.1+1 です)。
$ java -version
openjdk version "25.0.4.1" 2026-08-18 LTS
OpenJDK Runtime Environment Temurin-25.0.4.1+1 (build 25.0.4.1+1-LTS)
OpenJDK 64-Bit Server VM Temurin-25.0.4.1+1 (build 25.0.4.1+1-LTS, mixed mode, sharing)
$ javac -version
javac 25.0.4.1
1行目の末尾に「LTS」と出ていれば、LTS の JDK 25 です。 JDK 27(Temurin 27+35)では次のように出ました。
openjdk version "27" 2026-09-15
OpenJDK Runtime Environment Temurin-27+35 (build 27+35)
OpenJDK 64-Bit Server VM Temurin-27+35 (build 27+35, mixed mode, sharing)
| 見るところ | 正しく入っているとき |
|---|---|
java -version の1行目 |
"25.0.x" と LTS |
javac -version |
javac 25.0.x(出なければ JRE だけか、PATH が通っていない) |
where java の1行目 |
今回入れた JDK の bin\java.exe(複数行なら上が使われる) |
echo %JAVA_HOME% |
JDK のフォルダ(%JAVA_HOME% と文字のまま出たら未設定) |
Hello World で動作確認
// Hello.java(UTF-8 で保存)
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, Java " + Runtime.version());
System.out.println("java.home = " + System.getProperty("java.home"));
}
}
javac Hello.java
java Hello
Temurin 25 で実行した結果です(JDK のフォルダは ~/jdk/jdk-25.0.4.1+1)。
$ java Hello.java
Hello, Java 25.0.4.1+1-LTS
java.home = ~/jdk/jdk-25.0.4.1+1
$ javac Hello.java && java Hello
Hello, Java 25.0.4.1+1-LTS
java.home = ~/jdk/jdk-25.0.4.1+1
Java 11 以降は、java Hello.java でコンパイルせずに直接実行できます。java.home には、実際に動いている JDK のフォルダが出ます。java -XshowSettings:properties -version でも java.home を確かめられます。
複数の版を切り替える
Windows:そのウィンドウだけ切り替える
@echo off
rem jdk27.bat ― このウィンドウだけ JDK 27 に切り替える
set "JAVA_HOME=C:\Program Files\Eclipse Adoptium\jdk-27.0.x.x-hotspot"
set "PATH=%JAVA_HOME%\bin;%PATH%"
java -version
# PowerShell:プロファイル($PROFILE)に書いておく
function Use-Jdk([string]$Path) {
$env:JAVA_HOME = $Path
$env:Path = "$Path\bin;" + (($env:Path -split ';' | Where-Object { $_ -and $_ -notlike '*\jdk*\bin' }) -join ';')
java -version
}
# 使い方:Use-Jdk "C:\Program Files\Eclipse Adoptium\jdk-25.0.x.x-hotspot"
set や $env: は、そのウィンドウの中だけで有効です。PC 全体の設定は変わりません。
| 切り替え方法 | 範囲 | 向いている場面 |
|---|---|---|
| 環境変数(GUI)を書き換える | PC 全体 | 普段使う版を変える |
| バッチファイル・PowerShell 関数 | そのウィンドウだけ | 一時的に別の版で動かす |
| IDE の設定(Project SDK) | そのプロジェクトだけ | プロジェクトごとに版が違う |
| Gradle Toolchains・Maven Toolchains | ビルドだけ | ビルドに使う JDK を固定する |
Linux・macOS:シェル関数で切り替える
# ~/.bashrc や ~/.zshrc に書く。前の JDK を PATH から外してから切り替える
jdk() {
[ -n "$JAVA_HOME" ] && PATH="${PATH//$JAVA_HOME\/bin:/}"
export JAVA_HOME="$1"
export PATH="$JAVA_HOME/bin:$PATH"
java -version 2>&1 | head -1
}
Temurin 25 と 27 を切り替えた結果です。
$ jdk "$HOME/jdk/jdk-27+35"
openjdk version "27" 2026-09-15
$ jdk "$HOME/jdk/jdk-25.0.4.1+1"
openjdk version "25.0.4.1" 2026-08-18 LTS
$ jdk "$HOME/jdk/jdk-27+35"
openjdk version "27" 2026-09-15
$ echo $PATH
~/jdk/jdk-27+35/bin:/usr/bin:/bin
切り替えを繰り返しても、PATH に JDK の bin が積み重なっていません。PATH の上にある方が使われることも、type -a(Windows の where java に当たる)で確かめられます。
$ export PATH="$HOME/jdk/jdk-25.0.4.1+1/bin:$PATH"
$ type -a java
java is ~/jdk/jdk-25.0.4.1+1/bin/java
java is ~/jdk/jdk-27+35/bin/java
java is /usr/bin/java
java is /bin/java
$ java -version 2>&1 | head -1
openjdk version "25.0.4.1" 2026-08-18 LTS
よくあるエラーと対処
| 症状・エラー文 | 主な原因 | 対処 |
|---|---|---|
'java' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。 |
PATH に JDK の bin がない/設定前に開いたウィンドウ |
%JAVA_HOME%\bin を Path に追加し、ターミナルを開き直す |
'javac' は … 認識されていません。(java は動く) |
JRE だけ入っている/javapath の java だけが見えている |
JDK を入れ、JDK の bin を Path の上に置く |
The JAVA_HOME environment variable is not defined correctly,(Maven) |
JAVA_HOME が未設定、または bin まで含めて書いている |
bin の1つ上のフォルダを指定する |
ERROR: JAVA_HOME is set to an invalid directory:(Gradle) |
JAVA_HOME のフォルダが存在しない、または bin を含む |
同上 |
UnsupportedClassVersionError … class file version 69.0 |
新しい JDK でコンパイルしたものを、以前の Java で動かした | 動かす側の Java を上げるか、--release で作り直す |
error: release version 27 not supported |
JDK 25 の javac に --release 27 を指定した |
JDK 27 を入れるか、--release 25 にする |
java -version で以前の版(1.8.0 など)が出る |
Path の上の方に別の Java(javapath など)がある |
where java で確かめ、今回の JDK の bin を上に移す |
| IDE だけ以前の版のまま | 起動したときの環境変数を持ち続けている | IDE を再起動する |
'java' は認識されていません:確認の順番
- 新しいウィンドウで試したか。 環境変数は、アプリを起動したときの値が使われます。VS Code・IntelliJ のターミナルは、アプリごと再起動します
echo %JAVA_HOME%でフォルダが出るか。%JAVA_HOME%と文字のまま出たら未設定です- そのフォルダの
binにjava.exeとjavac.exeがあるか。javac.exeがなければ JRE です - Path に
%JAVA_HOME%\binがあるか。 スペルと、\binまで書いたかを確かめます
Linux で PATH に JDK がない状態を作ると、次のようになりました(終了コード 127 は「コマンドが見つからない」)。
/bin/bash: line 1: javac: command not found
exit=127
OS が違っても、「コマンドが見つからない」の原因は PATH に JDK の bin が入っていないことです。
JAVA_HOME is not defined correctly(Maven)・invalid directory(Gradle)
Maven 3.9 系の mvn.cmd は、%JAVA_HOME%\bin\java.exe が存在しないと次のメッセージで止まります(JAVA_HOME が空のときは PATH の java.exe を探し、見つからなければ同じメッセージです)。
The JAVA_HOME environment variable is not defined correctly,
this environment variable is needed to run this program.
Gradle 8.14.3 で、JAVA_HOME に bin まで含めて設定したときの出力です。
ERROR: JAVA_HOME is set to an invalid directory: ~/jdk/jdk-25.0.4.1+1/bin
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
どちらも JAVA_HOME に「bin の1つ上」を設定すると直ります。 gradle.bat(Windows 用)にも同じ文言が書かれています。
UnsupportedClassVersionError と class file version 対応表
JDK 27 でコンパイルしたクラスを Java 25 で実行すると、次のエラーになりました。
Error: LinkageError occurred while loading main class V
java.lang.UnsupportedClassVersionError: V has been compiled by a more recent version of the Java Runtime (class file version 71.0), this version of the Java Runtime only recognizes class file versions up to 69.0
「class file version」はクラスファイルに書かれた版の番号で、Java の版に44を足した数です。javac --release で作ったクラスを javap -v で見て確かめた対応表です。
| Java の版 | class file version | 確かめた方法 |
|---|---|---|
| Java 8 | 52 | JDK 27 の javac --release 8 |
| Java 11 | 55 | 同上 |
| Java 17 | 61 | 同上 |
| Java 21 | 65 | 同上 |
| Java 25 | 69 | 同上 |
| Java 26 | 70 | 同上 |
| Java 27 | 71 | 同上 |
エラー文の読み方は、「class file version 69.0 で作られたものを、up to 65.0 までしか読めない Java で動かした」です。実際に出た組み合わせは次のとおりです。
| 作った版 → 動かした Java | エラー文の数字 |
|---|---|
| 27 → 25 | class file version 71.0 / up to 69.0 |
| 25 → 21 | class file version 69.0 / up to 65.0 |
| 25 → 17 | class file version 69.0 / up to 61.0 |
| 21 → 11 | class file version 65.0 / up to 55.0 |
| 17 → 8 | class file version 61.0 / up to 52.0(先頭に A JNI error has occurred も出る) |
直し方は2つです。
- 動かす側の Java を、作った版以上にする(
java -versionで確かめる) - 作る側で、動かす Java に合わせてコンパイルする:
javac --release 21 Hello.javaのように指定すると、JDK 25 や 27 でも Java 21 で動くクラスになります(実際に--release 21で作ったクラスは、Java 21.0.10 でrunning on 21.0.10と動きました)。Maven はmaven.compiler.release、Gradle はoptions.releaseや Toolchains で指定します
JDK 27 の javac は --release 8 も受け付けましたが、source value 8 is obsolete and will be removed in a future release という警告が出ました。ライブラリの jar が原因のときの調べ方などは、関連記事「UnsupportedClassVersionErrorの直し方|版の対応表」で扱っています。Maven で release version 27 not supported が出るときは、関連記事「release version not supportedの直し方|Maven」で扱っています。
以前の Java が優先される(Oracle の javapath)
Oracle JDK を EXE インストーラで入れると、C:\Program Files\Common Files\Oracle\Java\javapath に java.exe・javaw.exe・javac.exe・jshell.exe がコピーされます(Oracle のインストールガイド)。このフォルダが Path の上にあると、そこにある java が使われます。
C:\Users\user> where java
C:\Program Files\Common Files\Oracle\Java\javapath\java.exe
C:\Program Files\Eclipse Adoptium\jdk-25.0.x.x-hotspot\bin\java.exe
where java の1行目が、実際に動く java.exe です。 対処は、Path で今回の JDK の bin を javapath より上に移すか、使わない Java を「設定 → アプリ → インストールされているアプリ」から削除するかです。Oracle のガイドには、JDK 25 の後に JRE 8 を入れると java -version が 1.8.0 を表示する場合があり、そのときは JDK 25 を入れ直すという案内もあります。
macOS・Linux へのインストール(短く)
macOS
| 方法 | コマンド・手順 |
|---|---|
| インストーラ(.pkg) | Temurin などのサイトで macOS 用 .pkg をダウンロードして実行 |
| Homebrew(Microsoft Build of OpenJDK) | brew install --cask microsoft-openjdk@25(Microsoft のドキュメントに記載) |
macOS では JDK が /Library/Java/JavaVirtualMachines/ に入り、JAVA_HOME は付属のコマンドで取れます。
# ~/.zshrc に追記
export JAVA_HOME=$(/usr/libexec/java_home -v 25)
export PATH="$JAVA_HOME/bin:$PATH"
Linux(Ubuntu 24.04)
Ubuntu 24.04 のパッケージには OpenJDK 25(openjdk-25-jdk、版は 25.0.4.1+1-1~24.04.4)があります。JDK 26・27 のパッケージはありません。
sudo apt-get update
sudo apt-get install -y openjdk-25-jdk # GUI が要らなければ openjdk-25-jdk-headless
# 入っている java の一覧と、既定の java の切り替え
update-alternatives --list java
sudo update-alternatives --config java
# JAVA_HOME は ~/.bashrc などに書く
export JAVA_HOME=/usr/lib/jvm/java-25-openjdk-amd64
update-alternatives --list java の出力例です(Ubuntu 24.04 に 8・11・17・21・25 を入れた状態)。
/usr/lib/jvm/java-11-openjdk-amd64/bin/java
/usr/lib/jvm/java-17-openjdk-amd64/bin/java
/usr/lib/jvm/java-21-openjdk-amd64/bin/java
/usr/lib/jvm/java-25-openjdk-amd64/bin/java
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
JDK 27 や配布元をそろえたい場合は、Temurin の tar.gz を展開して JAVA_HOME と PATH を設定します(上の「シェル関数で切り替える」の手順)。Microsoft は sudo apt-get install msopenjdk-25 を案内しています。
インストール後のチェックリスト
| チェック | 確認方法 |
|---|---|
| JDK 25(LTS)が入った | java -version の1行目に 25 と LTS |
| JDK(JRE ではない)が入った | javac -version が出る |
JAVA_HOME は bin の1つ上 |
echo %JAVA_HOME% |
| Path の先頭が今回の JDK | where java の1行目 |
| 新しいターミナル・IDE で確認した | 開き直してから再確認 |
| IDE のプロジェクト設定も 25 | IntelliJ「Project Structure → SDK」、VS Code「Java: Configure Java Runtime」 |
| 更新の方法を決めた | winget なら winget upgrade、MSI・ZIP なら新しい版を入れて JAVA_HOME を更新 |
よくある質問
Q. Java 25 のインストール方法は?
A. Windows では winget install --id EclipseAdoptium.Temurin.25.JDK -e がいちばん手早い方法です。画面で入れるなら adoptium.net から MSI をダウンロードし、「Set JAVA_HOME variable」を有効にします。入れた後は新しいターミナルで java -version と javac -version を確かめます。
Q. JDK 25(jdk25)はどこでダウンロードできますか? A. 無償で使える主な配布元は、Eclipse Temurin(adoptium.net)、Microsoft Build of OpenJDK、Amazon Corretto、Liberica JDK、Oracle JDK(oracle.com/java)です。迷ったら Temurin が選ばれることが多く、Windows では MSI・ZIP・winget のどれでも入れられます。
Q. Java 25 と Java 27 はどちらを入れるべきですか? A. 学習や業務で長く使うなら JDK 25(LTS)です。JDK 27 は非LTSで、Oracle の Premier サポートと Temurin の提供は2027年3月までです。新しい機能を試す目的なら 27 を入れ、普段使いの 25 と切り替えます。
Q. Java は無料で使えますか? A. Eclipse Temurin・Amazon Corretto・Microsoft Build of OpenJDK・Liberica JDK は GPLv2+Classpath Exception で、商用でも無償で使えます。Oracle JDK 25 は NFTC で無償提供され、2028年9月より後の更新は OTN ライセンスになる予定です。
Q. JAVA_HOME と Path はどちらも要りますか?
A. コマンドで java・javac を使うには Path、Maven・Gradle・IDE などのツールには JAVA_HOME が使われます。両方設定しておくと、コマンドとツールで同じ JDK が使われます。
Q. 設定したのに反映されません。再起動は要りますか? A. まずターミナルと IDE を閉じて開き直します。環境変数は、アプリが起動したときの値が使われるためです。それでも変わらないときは、サインアウトか Windows の再起動で反映されます。
Q. JDK 21 と JDK 25 を両方入れられますか?
A. 入れられます。フォルダが分かれて入り、Path の上にある方が java コマンドで使われます。普段使う版を JAVA_HOME と Path に設定し、別の版はバッチファイルや IDE の設定で切り替えます。
まとめ
- 新しく入れるなら JDK 25(LTS)。JDK 27 は2027年3月までの非LTS。JDK 26 は更新が終わった
- winget の ID は配布元で形が違う:
EclipseAdoptium.Temurin.25.JDK、Microsoft.OpenJDK.25、Amazon.Corretto.25.JDK、BellSoft.LibericaJDK.25、Oracle.JDK.25。JDK 27 は2026年10月16日時点で Corretto のみ - MSI は「Set JAVA_HOME variable」を有効に、ZIP は展開して自分で設定する
- JAVA_HOME は
binの1つ上、Path には%JAVA_HOME%\binを上の方に。setx で Path を書き換えない(1024文字で切り詰め・参照が展開される) - 確認は
java -version・javac -version・where java・echo %JAVA_HOME%を、新しいターミナルで - UnsupportedClassVersionError は「Java の版+44」の class file version で読む(25=69、27=71)。直すには実行側を上げるか
--releaseで作り直す
参考・出典
確認日はいずれも 2026年10月16日です。
- Oracle「Oracle Java SE Support Roadmap」:https://www.oracle.com/java/technologies/java-se-support-roadmap.html
- Oracle「JDK Installation Guide:Installation of the JDK on Microsoft Windows Platforms(JDK 25)」:https://docs.oracle.com/en/java/javase/25/install/installation-jdk-microsoft-windows-platforms.html
- Inside.java「The Arrival of Java 27!」:https://inside.java/2026/09/15/jdk-27-available/
- Eclipse Adoptium「Temurin Support(リリースロードマップ)」:https://adoptium.net/support/
- Eclipse Adoptium「Installation(Windows MSI)」:https://adoptium.net/installation/windows/
- Adoptium temurin25-binaries / temurin27-binaries(GitHub リリース):https://github.com/adoptium/temurin25-binaries/releases
- Microsoft「Install the Microsoft Build of OpenJDK」:https://learn.microsoft.com/en-us/java/openjdk/install
- Microsoft「Support roadmap for the Microsoft Build of OpenJDK」:https://learn.microsoft.com/en-us/java/openjdk/support
- Amazon Corretto FAQs:https://aws.amazon.com/corretto/faqs/
- BellSoft「Liberica JDK Roadmap」:https://bell-sw.com/roadmap/
- winget 公式リポジトリ microsoft/winget-pkgs(manifests):https://github.com/microsoft/winget-pkgs
- Microsoft「setx」:https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/setx
- Microsoft「Environment.SetEnvironmentVariable メソッド」:https://learn.microsoft.com/en-us/dotnet/api/system.environment.setenvironmentvariable
- Apache Maven ソース(apache-maven/src/bin/mvn.cmd、maven-3.9.x):https://github.com/apache/maven
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「Java 25インストール(Windows)|JDK 25/27とJAVA_HOME」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。