Skip to content

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 2266
Java SE 2165
Java SE 2064
Java SE 1963
Java SE 1862
Java SE 1761
Java SE 1660
Java SE 1559
Java SE 1458
Java SE 1357
Java SE 1256
Java SE 1155
Java SE 1054
Java SE 953
Java SE 852
Java SE 751
Java SE 6.050
Java SE 5.049
JDK 1.448
JDK 1.347
JDK 1.246
JDK 1.145

解決方法

方法1: IntelliJ IDEAのGradle JVM設定を変更する

最も効果的な解決策は、IntelliJ IDEAの設定でGradleが使用するJVMを明示的に指定することです。

  1. 設定を開く:

    • IntelliJ IDEAで FileSettings(Macでは Preferences)を選択
    • Build, Execution, DeploymentBuild ToolsGradle に移動
  2. Gradle JVMを設定:

    • Gradle JVM オプションをクリック
    • プロジェクトに適したJavaバージョンを選択
    • 変更を適用する

Gradle JVM設定

TIP

プロジェクトで使用しているJavaバージョンと一致するJDKを選択してください。例えば、プロジェクトがJava 14を使用している場合は、JDK 14を選択します。

方法2: Gradleバージョンをアップグレードする

古いGradleバージョンは新しいJavaバージョンをサポートしていない場合があります。gradle-wrapper.propertiesファイルを編集してGradleバージョンをアップグレードします。

properties
# 変更前(例)
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が正しく設定されているか確認します。

bash
# ターミナルで確認
echo $JAVA_HOME

# 期待される出力例(パスは環境により異なります)
/Library/Java/JavaVirtualMachines/jdk-14.0.1.jdk/Contents/Home

環境変数が設定されていない場合、または間違ったバージョンを指している場合は修正が必要です。

方法4: Javaキャッシュをクリアする(VSCodeユーザー向け)

VSCodeを使用している場合、Java Language Serverのキャッシュをクリアすることで解決することがあります。

  1. VSCodeで Ctrl+Shift+P(Macでは Cmd+Shift+P)を押す
  2. Clean Java Language Server Workspace コマンドを実行

プラットフォーム別の注意点

Windowsの場合

Chocolateyパッケージマネージャーを使用して正しいJavaバージョンをインストールできます。

powershell
# 管理者権限のPowerShellで実行
choco install -y nodejs.install openjdk8

Linux(Arch/Manjaro)の場合

OpenJDK 16とGradle間に既知の互換性問題がある場合があります。OpenJDK 11に切り替えることで解決できます。

bash
# 利用可能なJavaバージョンを確認
archlinux-java status

# OpenJDK 11に切り替え
sudo archlinux-java set java-11-openjdk

Android Studioの場合

Android Studioでも同様の問題が発生することがあります。

  1. FileSettingsBuild, Execution, DeploymentBuild ToolsGradle に移動
  2. 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バージョンの不一致が主な原因です。以下のステップで解決を試みてください:

  1. IntelliJ IDEAのGradle JVM設定を確認・修正
  2. GradleバージョンをプロジェクトのJavaバージョンと互換性のあるものにアップデート
  3. 環境変数JAVA_HOMEが正しく設定されているか確認
  4. 必要に応じてJavaのキャッシュをクリア

プロジェクトの要件と使用しているツールの互換性を常に確認することが、このような問題を予防する最良の方法です。