IT

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

flutter doctor --android-licensesが「class file version 61.0」で止まるのは、Java 17以上が必要なツールを古いJavaで動かしているためです。2つの直し方を紹介します。

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

flutter doctor –android-licensesが通らない件について、
もしエラー内容で同じであれば、参考にしてください!

エラー詳細

環境

・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

解決策

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文字になっていたので直しました)

何回か「y/n」に答えて、下記のように表示されたら成功

bash
10.8 Open Source Software. In the event Open Source software is included with Evaluation Software, such Open Source software is licensed pursuant to the applicable Open Source software license agreement identified in the Open Source software comments in the applicable source code file(s) and/or file header as indicated in the Evaluation Software. Additional detail may be available (where applicable) in the accompanying on-line documentation. With respect to the Open Source software, nothing in this Agreement limits any rights under, or grants rights that supersede, the terms of any applicable Open Source software license agreement. ————————————— 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以上に合わせる方法

どの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」と出る場合

ライセンスより前に、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日確認)。

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

Flutterの環境構築苦戦中です…😢

よくある質問

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)だけです。