IT

【Flutter】flutter doctor --android-licensesが通らない件

flutter doctor --android-licensesが「class file version 61.0」で止まるのは、Javaが古いためです。ツールの版を下げる方法と、Javaを17以上に合わせる方法を紹介します。

この記事の結論:flutter doctor --android-licenses が止まる原因は、Androidのコマンドラインツールが求めるJava(17以上)より古いJavaで動いていることです。「class file version 61.0」や「Java version 17 or higher is required」と出るのはこのためです。Android Studioに同梱のJavaを使うか、flutter config --jdk-dir で17以上のJavaを指定し直すと通ります。この記事では、筆者が実際に通した「Command-line Toolsの版を下げる」方法と、Javaを合わせる方法の両方をまとめています。

この記事の内容のご相談は株式会社bundlyzeへbundlyzeのシステム開発について見てみる

エラー詳細

flutter doctor --android-licenses が止まる原因は、エラー文の中の数字で見分けられます。「class file version 61.0」と「55.0」が並んでいれば、Javaの版が古いことが原因です。

筆者の環境では、flutter doctor --android-licenses を実行すると、Javaの「UnsupportedClassVersionError」で止まりました。同じエラー文が出ているなら、この記事の直し方が当てはまります。

環境

・MacBook Air (M1)
・macOS Sonoma14.1

エラー内容

bash
java.lang.UnsupportedClassVersionError:  com/android/sdklib/tool/sdkmanager/SdkManagerCli has been compiled  by a more recent version of the Java Runtime (class file version 61.0),  this version of the Java Runtime only recognizes class file versions up to 55.0

解決策:Command-line Toolsの版を下げて再実行する

筆者が実際に通した方法は、Android StudioのSDK Managerで「Android SDK Command-line Tools」を8.0に下げてから、flutter doctor --android-licenses をもう一度実行するやり方です。

Android Studioを起動後、SDK Managerを開く

Android Studioのようこそ画面で、右上のメニューから「SDK Manager」を開く

Android SDK Command-line Tools ver.8.0を選択して、「Apply」

(同じエラー内容の場合、ver8.0をダウンロードしないといけないかも)
SDK Managerの「SDK Tools」タブでAndroid SDK Command-line Toolsの8.0を選ぶ画面

再度コマンドを実行

bash
flutter doctor --android-licenses

(ハイフンは2つです。以前はこの記事で「–」1文字になっていたので直しました)

ライセンスの文章が表示されるたびに「Accept? (y/N)」と聞かれるので、「y」で答えていきます。最後に次のように表示されたら成功です(Flutter公式:Android setup、2026年10月2日確認)。

bash
Accept? (y/N): y
All SDK package licenses accepted

なぜ「class file version 61.0」で止まるのか

エラーの「class file version 61.0」はJava 17で作られたプログラム、「55.0」はJava 11までしか読めないJavaを指します(Java仮想マシンの仕様の対応表、2026年10月2日確認)。つまり、新しいCommand-line ToolsをJava 11以下で動かそうとして失敗しています。

新しめのツールでは、同じ原因が次のような文で出ることもあります。

bash
Java version 17 or higher is required. To override this check set SKIP_JDK_VERSION_CHECK

上の手順(Command-line Toolsをver.8.0に下げる)は、ツールの方を古いJavaに合わせるやり方です。今から設定するなら、次の「Javaの方を合わせる」方法をおすすめします。

Javaの方を17以上に合わせる方法

Flutterが使うJavaを17以上にするには、flutter doctor -v で今のJavaを確かめ、flutter config --jdk-dir=<Java 17以上のフォルダ> で指定し直します。

どのJavaが使われているか確かめる

bash
flutter doctor -v

Android toolchainの欄に、使われているJavaの場所と版が出ます。Flutterは、Android Studioに同梱のJavaを優先して使い、Android Studioがなければ環境変数 JAVA_HOME、それもなければパスの通った java を使います(Flutter公式:Android Java Gradle migration guide、2026年10月2日確認)。

17以上のJavaを指定する

bash
flutter config --jdk-dir=<Java 17以上のフォルダ>

Macで Homebrew の openjdk@17 を入れている場合、公式の例では /opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home のような場所です(版の数字は入れたものに合わせてください)。指定したら、もう一度 flutter doctor --android-licenses を実行します。

「cmdline-tools component is missing」と出る場合

「cmdline-tools component is missing」は、Command-line Tools自体が入っていないという意味で、SDK Managerから入れれば直ります。ライセンスより前に、Command-line Tools自体が入っていないこともあります。Android StudioのSDK Managerで「SDK Tools」タブを開き、「Android SDK Command-line Tools」にチェックを入れて「Apply」します(Flutter公式:Android setup、2026年10月2日確認)。

Flutterを通さずに直接ライセンスに同意する場合は、SDKの cmdline-tools/latest/bin にある sdkmanager --licenses でも同じことができます(Android Developers:sdkmanager、2026年10月2日確認)。

PHPなど別の言語の開発環境づくりでつまずいたときは、XAMPPでPHPとMySQLの開発環境を作る方法も参考にしてください。

株式会社bundlyzeでは、予約管理システムを企画から運用まで開発しています。アプリやシステムを作り始める前に何を決めておくかは、要件定義とは|システム開発を発注する側が準備することにまとめています。

出典

下の4つは、どれも 2026-10-03 に内容を確認しました。

よくある質問

flutter doctor --android-licenses は何をするコマンド?

Android SDKの利用規約(ライセンス)を表示して、同意を記録するコマンドです。「y」で答えていき、最後に「All SDK package licenses accepted」と出れば完了です。

「Some Android licenses not accepted」と出たら?

まだ同意していないライセンスが残っているという意味です。flutter doctor --android-licenses を実行して、すべて「y」で答えます。このコマンド自体がJavaのエラーで止まる場合は、上の「Javaの方を17以上に合わせる方法」を試してください。

Windowsでも同じ直し方でよい?

原因(Javaの版が古い)と、flutter doctor -v で確かめて flutter config --jdk-dir で指定する流れは同じです。フォルダの書き方だけ、Windowsの場所(例:Javaを入れたフォルダ)に置き換えてください。筆者が試したのはMac(M1)だけです。

「cmdline-tools component is missing」と出るときは?

Command-line Tools自体が入っていません。Android StudioのSDK Managerで「SDK Tools」タブを開き、「Android SDK Command-line Tools」にチェックを入れて「Apply」してから、もう一度 flutter doctor --android-licenses を実行します。

この記事の書き方と確認の方針