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 を例にします。

  1. adoptium.net の Temurin のダウンロードページを開く
  2. Operating System:Windows、Architecture:x64、Package Type:JDK、Version:25 - LTS を選ぶ
  3. .msi をダウンロードする(2026年10月16日時点のファイル名は OpenJDK25U-jdk_x64_windows_hotspot_25.0.4.1_1.msi)
  4. ダブルクリックし、「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)

  1. スタートメニューの検索で「環境変数」と入力し、「システム環境変数の編集」(または「環境変数を編集」)を開く
  2. 「環境変数(N)...」ボタンを押す
  3. 上段「ユーザー環境変数」の「新規(N)...」で、変数名 JAVA_HOME、変数値に JDK のフォルダ(例:C:\Program Files\Eclipse Adoptium\jdk-25.0.x.x-hotspot)を入れる。「ディレクトリの参照」で選ぶと入力ミスを防げる
  4. 上段の「Path」を選んで「編集(E)...」→「新規(N)」で %JAVA_HOME%\bin を追加する
  5. 「上へ(U)」で %JAVA_HOME%\bin を一番上に移す
  6. すべての画面で「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' は認識されていません:確認の順番

  1. 新しいウィンドウで試したか。 環境変数は、アプリを起動したときの値が使われます。VS Code・IntelliJ のターミナルは、アプリごと再起動します
  2. echo %JAVA_HOME% でフォルダが出るか。 %JAVA_HOME% と文字のまま出たら未設定です
  3. そのフォルダの bin に java.exe と javac.exe があるか。 javac.exe がなければ JRE です
  4. 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期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?