Android Studioでプロジェクトを開いたときやGradle Sync、ビルドを実行したときに、
「Unsupported class file major version」
というエラーが表示されることがあります。
このエラーは、
Javaのクラスファイルを作成したJDKのバージョンと、
そのクラスファイルを読み込もうとしているGradleやJDKなどの環境に
互換性がない場合に発生します。
特にJDKを更新した場合、
Android StudioやGradleを更新した場合、
または古いAndroidプロジェクトを新しいJava環境で開いた場合に発生することがあります。
この記事では、
Android Studioで「Unsupported class file major version」と表示される主な原因と解決方法を解説します。
- 「Unsupported class file major version」とは
- 主な原因
- エラーメッセージのmajor versionを確認する
- major versionとJavaバージョンの対応を確認する
- 現在使用しているJavaのバージョンを確認する
- Gradle JDKを確認する
- Android Studio付属のJDKを確認する
- Gradleのバージョンを確認する
- 現在のGradleバージョンを確認する
- JDKが新しすぎる場合
- Gradleが古すぎる場合
- Android Gradle Pluginのバージョンを確認する
- GradleとAndroid Gradle Pluginの組み合わせを確認する
- Android Studioを更新した後に発生した場合
- JDKだけを更新した場合
- Gradleだけを更新した場合
- 古いプロジェクトを新しいJDKで開いた場合
- 外部プラグインが原因の場合
- 依存ライブラリが原因の場合
- システムのJavaとGradle JDKを混同しない
- JAVA_HOMEを確認する
- Gradle Syncを再実行する
- Clean Projectを実行する
- Android Studioを再起動する
- エラー別の確認ポイント
- 解決しない場合の確認手順
- まとめ
「Unsupported class file major version」とは
「Unsupported class file major version」は、
Javaのクラスファイルのバージョンを、
現在使用しているJava実行環境やGradleなどが読み込めない場合に表示されるエラーです。
Javaでコンパイルされた
.class
ファイルには、
使用されたJavaのバージョンに対応するmajor versionが記録されています。
例えば、
新しいJDKで作成されたクラスファイルを、
それに対応していない古いGradleやJDKで読み込もうとすると、
このエラーが発生することがあります。
ポイント:
「Unsupported class file major version」は、
Android Studioそのものの問題ではなく、
JDK、Gradle、Android Gradle Pluginなどのバージョンの組み合わせが原因になっている場合があります。
主な原因
Android Studioで
「Unsupported class file major version」が発生する主な原因には、
次のようなものがあります。
- 使用しているJDKが新しすぎる
- Gradleのバージョンが古い
- Android Gradle Pluginのバージョンが古い
- Gradle JDKに対応していないJDKが選択されている
- Android Studioの更新後にJDKが変更された
- JDKだけを更新した
- Gradleだけを古いまま使用している
- 古いAndroidプロジェクトを新しいJDKで開いた
- 外部プラグインが新しいJavaバージョンでコンパイルされている
- システムのJavaとAndroid StudioのGradle JDKが異なっている
エラーメッセージのmajor versionを確認する
エラーには、
次のようにmajor versionの番号が表示される場合があります。
Unsupported class file major version 65
major versionの番号は、
Javaのバージョンと対応しています。
例えば、
major version 65はJava 21で生成されたクラスファイルを示します。
そのため、
このクラスファイルを読み込むGradleやJava環境がJava 21に対応していない場合、
エラーが発生することがあります。
major versionとJavaバージョンの対応を確認する
よく使用されるmajor versionとJavaバージョンの対応は、
次のようになります。
| major version | Javaバージョン |
|---|---|
| 52 | Java 8 |
| 55 | Java 11 |
| 61 | Java 17 |
| 62 | Java 18 |
| 63 | Java 19 |
| 64 | Java 20 |
| 65 | Java 21 |
エラーに表示されたmajor versionから、
どのJavaバージョンで作成されたクラスファイルなのかを確認できます。
現在使用しているJavaのバージョンを確認する
Terminalなどから、
現在使用しているJavaのバージョンを確認できます。
java -version
表示されたJavaのバージョンが、
Android StudioのGradleで実際に使用されているJDKと同じとは限りません。
そのため、
Android Studio側のGradle JDKも確認する必要があります。
Gradle JDKを確認する
Android Studioでは、
Gradleが使用するJDKを個別に設定できます。
システムの
java -version
では正しいJDKが表示されていても、
Android Studioでは別のGradle JDKが選択されている場合があります。
Android StudioのGradle設定を開き、
現在選択されているGradle JDKを確認します。
使用しているGradleやAndroid Gradle Pluginに対応しているJDKを選択します。
Android Studio付属のJDKを確認する
Android Studioには、
JDKが付属している場合があります。
Gradle JDKとしてAndroid Studio付属のJDKを使用することで、
外部にインストールしたJavaとのバージョン差による問題を減らせる場合があります。
ただし、
使用しているGradleやAndroid Gradle PluginがそのJDKに対応しているか確認する必要があります。
Gradleのバージョンを確認する
JDKが新しい場合、
古いGradleではそのJavaバージョンを利用できないことがあります。
プロジェクトで使用しているGradleのバージョンは、
通常次のファイルで確認できます。
gradle/wrapper/gradle-wrapper.properties
ファイル内の
distributionUrl
を確認します。
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
現在のGradleバージョンを確認する
TerminalからGradle Wrapperを使用して、
現在使用されているGradleのバージョンを確認できます。
./gradlew --version
Windowsでは、
環境によって次のように実行します。
gradlew.bat --version
この表示では、
Gradleのバージョンだけでなく、
Gradleが使用しているJVMの情報も確認できます。
JDKが新しすぎる場合
使用しているJDKがGradleに対して新しすぎる場合、
「Unsupported class file major version」が発生することがあります。
この場合は、
Gradleを新しいJDKに対応したバージョンへ更新するか、
使用するJDKをGradleが対応しているバージョンへ変更します。
どちらを変更するかは、
Android Gradle Pluginなどとの互換性も含めて判断します。
Gradleが古すぎる場合
新しいJDKを使用している一方で、
Gradle Wrapperが古い場合は、
Gradle側がJavaの新しいクラスファイル形式を扱えないことがあります。
この場合は、
gradle-wrapper.properties
のGradleバージョンを確認し、
使用しているJDKに対応したGradleへ変更します。
注意:
Gradleだけを最新バージョンへ変更すると、
Android Gradle Pluginとの互換性問題が発生する場合があります。
GradleとAndroid Gradle Pluginの対応関係も確認します。
Android Gradle Pluginのバージョンを確認する
Android Gradle Pluginも、
GradleやJDKとの対応関係があります。
プロジェクトによっては、
次のようにAndroid Gradle Pluginのバージョンが指定されています。
plugins {
id("com.android.application") version "8.5.0" apply false
}
古い形式のプロジェクトでは、
次のように設定されている場合があります。
classpath 'com.android.tools.build:gradle:8.5.0'
Android Gradle Pluginが古い場合、
新しいGradleやJDKとの組み合わせに対応できない場合があります。
GradleとAndroid Gradle Pluginの組み合わせを確認する
「Unsupported class file major version」が発生した場合、
JDKだけを変更すれば必ず解決するとは限りません。
Androidプロジェクトでは、
Android Gradle Plugin、
Gradle、
JDKの3つのバージョンが関連しています。
いずれか1つだけを大きく変更すると、
別の互換性エラーが発生する場合があります。
そのため、
3つの対応関係を確認しながら変更します。
Android Studioを更新した後に発生した場合
Android Studioを更新すると、
Gradleで使用されるJDKや、
推奨されるAndroid Gradle Pluginのバージョンが変わる場合があります。
Android Studio更新直後から
「Unsupported class file major version」が発生した場合は、
Gradle JDKが以前と変わっていないか確認します。
また、
プロジェクトで使用しているGradleが、
新しく選択されたJDKに対応しているか確認します。
JDKだけを更新した場合
JDKだけを新しいバージョンへ更新した場合、
古いGradleが新しいJavaバージョンに対応できず、
エラーが発生することがあります。
JDKを更新した直後にエラーが発生した場合は、
Gradle Wrapperのバージョンを確認します。
必要に応じて、
Gradleを更新するか、
以前使用していたJDKへ戻します。
Gradleだけを更新した場合
Gradleだけを更新した場合でも、
Android Gradle PluginやJDKとの組み合わせによっては
別の互換性エラーが発生することがあります。
Gradle更新直後にエラーが発生した場合は、
Android Gradle PluginとJDKのバージョンも確認します。
古いプロジェクトを新しいJDKで開いた場合
古いAndroidプロジェクトでは、
当時のGradleやAndroid Gradle Pluginが使用されています。
そのプロジェクトを新しいAndroid StudioやJDKで開くと、
古いGradleが新しいJava環境に対応できない場合があります。
この場合は、
Gradle、
Android Gradle Plugin、
JDKの対応関係を確認しながら、
必要なものを順番に更新します。
外部プラグインが原因の場合
Android Gradle Plugin以外のGradleプラグインが、
新しいJavaバージョンでコンパイルされている場合もあります。
そのプラグインを古いJDKやGradleで読み込もうとすると、
「Unsupported class file major version」が発生する場合があります。
エラーの前後に特定のプラグイン名が表示されている場合は、
そのプラグインが要求するJavaやGradleのバージョンも確認します。
依存ライブラリが原因の場合
外部ライブラリや依存関係に含まれるクラスファイルが、
現在の環境より新しいJavaバージョンで作成されている場合もあります。
エラーに特定のJARファイルやライブラリ名が表示されている場合は、
そのライブラリの対応Javaバージョンを確認します。
システムのJavaとGradle JDKを混同しない
PCに複数のJDKがインストールされている場合、
Terminalで使用されるJavaと、
Android StudioのGradleで使用されるJavaが異なる場合があります。
Terminalでは、
次のコマンドでJavaのバージョンを確認できます。
java -version
一方、
Gradleが実際に使用しているJVMは、
次のコマンドでも確認できます。
./gradlew --version
この2つで異なるJavaが表示される場合があります。
JAVA_HOMEを確認する
コマンドラインからGradleを実行している場合は、
JAVA_HOME
の設定も影響することがあります。
JAVA_HOME
が古いJDKや意図しないJDKを指している場合、
Android Studioとは異なるJava環境でGradleが実行されることがあります。
Android Studioでの実行とTerminalでの実行で結果が異なる場合は、
JAVA_HOME
も確認します。
Gradle Syncを再実行する
JDKやGradle、
Android Gradle Pluginの設定を変更した後は、
Gradle Syncを再実行します。
Android Studioから
Sync Project with Gradle Files
などを実行します。
設定変更後に以前のエラーが残っている場合も、
Syncによって新しい設定が読み込まれることがあります。
Clean Projectを実行する
JDKやGradleを変更した後も、
以前のビルド成果物が残っている場合があります。
Android StudioのBuildメニューなどから
Clean Project
を実行し、
その後Gradle SyncやRebuild Projectを実行します。
Android Studioを再起動する
Gradle JDKなどを変更しても
以前の状態が残っている場合は、
Android Studioを再起動します。
再起動後にGradle Syncを実行し、
新しいJDKやGradle設定が使用されているか確認します。
エラー別の確認ポイント
JavaやGradleに関するエラーによって、
確認すべき場所をある程度絞り込むことができます。
| 表示される内容 | 主な確認ポイント |
|---|---|
| Unsupported class file major version | JDK、Gradle、Android Gradle Plugin |
| Minimum supported Gradle version is … | Gradle Wrapper、Android Gradle Plugin |
| incompatible version of the Android Gradle plugin | Android Studio、Android Gradle Plugin、Gradle |
| Unsupported Java | JDK、Gradle |
| Gradle sync failed | 詳細エラー、JDK・Gradle・プラグインの互換性 |
解決しない場合の確認手順
原因が分からない場合は、
次の順番で確認すると問題を切り分けやすくなります。
- 「Unsupported class file major version」のエラー全文を確認する
- エラーに表示されたmajor versionを確認する
- major versionに対応するJavaバージョンを確認する
java -versionでシステムのJavaを確認する- Android StudioのGradle JDKを確認する
./gradlew --versionでGradleとJVMを確認するgradle-wrapper.propertiesでGradleのバージョンを確認する- Android Gradle Pluginのバージョンを確認する
- JDK、Gradle、Android Gradle Pluginの対応関係を確認する
- 必要に応じてJDKまたはGradleを対応するバージョンへ変更する
- 外部プラグインやライブラリが原因でないか確認する
- 必要に応じて
JAVA_HOMEを確認する - Gradle Syncを再実行する
- 必要に応じてClean Projectを実行する
- 必要に応じてAndroid Studioを再起動する
重要:
「Unsupported class file major version」が表示された場合は、
JDKだけを新しくしたり古くしたりするのではなく、
JDK、Gradle、Android Gradle Pluginの互換性を確認し、
対応している組み合わせにすることが重要です。
まとめ
Android Studioの
「Unsupported class file major version」
は、
Javaのクラスファイルのバージョンと、
それを読み込むJDKやGradleなどに互換性がない場合に表示されるエラーです。
特にJDKだけを更新した場合や、
古いGradleを新しいJava環境で使用した場合、
古いAndroidプロジェクトを新しいAndroid Studioで開いた場合などに発生することがあります。
まずエラーに表示されたmajor versionを確認し、
次に
java -version
と
./gradlew --version
で実際に使用されているJavaとGradleを確認します。
そのうえで、
Android StudioのGradle JDK、
Gradle Wrapper、
Android Gradle Pluginのバージョンを確認し、
互換性のある組み合わせへ変更してからGradle Syncを再実行すると、
原因を効率よく切り分けることができます。
