Unsupported class file major version 60
問題の概要
IntelliJ IDEAでGradleプロジェクトを開いた際に「unsupported class file major version 60」というエラーが発生する問題について説明します。このエラーは、JavaのバージョンとGradleのバージョン間に互換性がない場合に発生します。
エラーメッセージの例:
* Where:
Initialization script '/tmp/ijmapper.gradle
* What went wrong:
Could not compile initialization script '/tmp/ijmapper.gradle`.
> Startup failed:
General error during semantic analysis: Unsupported class file major version 60.
重要
Major version 60はJava 16に対応していますが、実際にプロジェクトで使用しているJavaバージョンとは異なる場合があります。これはIDEの設定と実際のJavaバージョンに不一致があることを示しています。
Javaクラスファイルのメジャーバージョン一覧
Javaの各バージョンに対応するクラスファイルのメジャーバージョンは以下の通りです:
Javaバージョン | メジャーバージョン |
---|---|
Java SE 22 | 66 |
Java SE 21 | 65 |
Java SE 20 | 64 |
Java SE 19 | 63 |
Java SE 18 | 62 |
Java SE 17 | 61 |
Java SE 16 | 60 |
Java SE 15 | 59 |
Java SE 14 | 58 |
Java SE 13 | 57 |
Java SE 12 | 56 |
Java SE 11 | 55 |
Java SE 10 | 54 |
Java SE 9 | 53 |
Java SE 8 | 52 |
Java SE 7 | 51 |
Java SE 6.0 | 50 |
Java SE 5.0 | 49 |
JDK 1.4 | 48 |
JDK 1.3 | 47 |
JDK 1.2 | 46 |
JDK 1.1 | 45 |
解決方法
方法1: IntelliJ IDEAのGradle JVM設定を変更する
最も効果的な解決策は、IntelliJ IDEAの設定でGradleが使用するJVMを明示的に指定することです。
設定を開く:
- IntelliJ IDEAで
File
→Settings
(MacではPreferences
)を選択 Build, Execution, Deployment
→Build Tools
→Gradle
に移動
- IntelliJ IDEAで
Gradle JVMを設定:
Gradle JVM
オプションをクリック- プロジェクトに適したJavaバージョンを選択
- 変更を適用する
TIP
プロジェクトで使用しているJavaバージョンと一致するJDKを選択してください。例えば、プロジェクトがJava 14を使用している場合は、JDK 14を選択します。
方法2: Gradleバージョンをアップグレードする
古いGradleバージョンは新しいJavaバージョンをサポートしていない場合があります。gradle-wrapper.properties
ファイルを編集してGradleバージョンをアップグレードします。
# 変更前(例)
distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip
# 変更後(例)
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-all.zip
GradleとJavaの互換性表
GradleとJavaのバージョン互換性は公式ドキュメントで確認できます。以下は主要な互換性情報です:
- Gradle 7.0+ : Java 16以上をサポート
- Gradle 6.8+ : Java 15までサポート
- Gradle 6.3+ : Java 14までサポート
方法3: 環境変数JAVA_HOMEを確認する
システムの環境変数JAVA_HOME
が正しく設定されているか確認します。
# ターミナルで確認
echo $JAVA_HOME
# 期待される出力例(パスは環境により異なります)
/Library/Java/JavaVirtualMachines/jdk-14.0.1.jdk/Contents/Home
環境変数が設定されていない場合、または間違ったバージョンを指している場合は修正が必要です。
方法4: Javaキャッシュをクリアする(VSCodeユーザー向け)
VSCodeを使用している場合、Java Language Serverのキャッシュをクリアすることで解決することがあります。
- VSCodeで
Ctrl+Shift+P
(MacではCmd+Shift+P
)を押す Clean Java Language Server Workspace
コマンドを実行
プラットフォーム別の注意点
Windowsの場合
Chocolateyパッケージマネージャーを使用して正しいJavaバージョンをインストールできます。
# 管理者権限のPowerShellで実行
choco install -y nodejs.install openjdk8
Linux(Arch/Manjaro)の場合
OpenJDK 16とGradle間に既知の互換性問題がある場合があります。OpenJDK 11に切り替えることで解決できます。
# 利用可能なJavaバージョンを確認
archlinux-java status
# OpenJDK 11に切り替え
sudo archlinux-java set java-11-openjdk
Android Studioの場合
Android Studioでも同様の問題が発生することがあります。
File
→Settings
→Build, Execution, Deployment
→Build Tools
→Gradle
に移動Gradle JVM
オプションをJDK 11など互換性のあるバージョンに変更
その他の考慮事項
Mavenプロジェクトの場合
Mavenプロジェクトで同様のエラーが発生する場合、以下の点を確認してください:
pom.xml
内のJUnit、Surefire、Jacoco、Mockitoなどのプラグインバージョン- 使用しているJDKバージョンとの互換性
- プラグイン間の互換性
Flutterプロジェクトの場合
Flutterプロジェクトでは、Java JDKバージョン16が一部のパッケージと互換性がない場合があります。JDK 15にダウングレードすることで解決可能です。
まとめ
「unsupported class file major version 60」エラーは、JavaバージョンとGradleバージョンの不一致が主な原因です。以下のステップで解決を試みてください:
- IntelliJ IDEAのGradle JVM設定を確認・修正
- GradleバージョンをプロジェクトのJavaバージョンと互換性のあるものにアップデート
- 環境変数
JAVA_HOME
が正しく設定されているか確認 - 必要に応じてJavaのキャッシュをクリア
プロジェクトの要件と使用しているツールの互換性を常に確認することが、このような問題を予防する最良の方法です。