Skip to content

GradleとJavaのバージョン不一致エラー「Unsupported class file major version」の解決方法

問題

Apple Silicon (ARM) MacでFlutterプロジェクトを実行しようとすると、以下のエラーが発生します:

Could not open settings generic class cache for settings file '/path/to/settings.gradle'
> BUG! exception in phase 'semantic analysis' in source unit '_BuildScript_' Unsupported class file major version 61

このエラーは、GradleのバージョンとJavaのバージョンが互換性がない場合に発生します。

原因

GradleとJavaのバージョンには互換性マトリックスがあり、特定のJavaバージョンに対応するGradleバージョンを使用する必要があります。例えば:

  • Java 17 には Gradle 7.3 以上が必要
  • Java 19 には Gradle 7.6 以上が必要
  • Java 21 には Gradle 8.4 以上が必要

解決方法

方法1: Gradleバージョンの更新(推奨)

プロジェクトの android/gradle/wrapper/gradle-wrapper.properties ファイルを開き、distributionUrl を適切なバージョンに変更します。

properties
# 変更前(例)
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip

# 変更後(Java 17の場合)
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-all.zip

GradleとJavaの互換性表

最新の互換性情報はGradle公式ドキュメントで確認してください。

方法2: Flutterが使用するJDKの設定

Flutterが使用するJDKを明示的に設定します:

bash
flutter config --jdk-dir '使用したいJDKのパス'

例:

bash
# Macの場合
flutter config --jdk-dir '/Users/username/Library/Java/JavaVirtualMachines/corretto-17.0.12/Contents/Home'

# Windowsの場合
flutter config --jdk-dir="C:\Program Files\Java\jdk-17"

現在Flutterが使用しているJDKを確認するには:

bash
flutter doctor -v

方法3: Android Studioでの設定

  1. Android Studioを開く
  2. Preferences > Build, Execution, Deployment > Build Tools > Gradle に移動
  3. Gradle JDK を適切なバージョンに変更
groovy
android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
}

方法4: キャッシュのクリア

Gradleキャッシュが破損している場合、以下の手順でクリアできます:

  1. Android Studioで Settings > Build, Execution, Deployment > Build Tools > Gradle を開く
  2. Gradle user home のパスを確認
  3. 該当フォルダを削除または名前を変更
  4. プロジェクトを再ビルド

トラブルシューティング

インストールされているJDKの確認

MacでインストールされているJDKを確認するには:

bash
/usr/libexec/java_home -V

環境変数の設定

システムの環境変数 JAVA_HOME を設定することも有効です:

bash
# .zshrcまたは.bash_profileに追加
export JAVA_HOME="/path/to/your/jdk"
export PATH=$JAVA_HOME/bin:$PATH

予防策

  1. 定期的なアップデート: GradleとJavaのバージョンを定期的に更新する
  2. 互換性の確認: 新しいバージョンを導入する前に互換性を確認する
  3. バージョン管理: プロジェクトのドキュメントに使用バージョンを明記する

まとめ

「Unsupported class file major version」エラーは、GradleとJavaのバージョン不一致が主な原因です。現在使用しているJavaバージョンに対応するGradleバージョンに更新するか、Flutterが使用するJDKを明示的に設定することで解決できます。

最新の互換性情報は常にGradle公式ドキュメントで確認することをおすすめします。