Skip to content

Gradle Javaバージョン不一致エラーの解決方法

問題概要

Gradleビルド時に以下のようなエラーメッセージが表示される場合があります:

Incompatible because this component declares a component compatible with Java 11 and the consumer needed a component compatible with Java 10

このエラーは、依存関係のJavaバージョンとプロジェクトのJavaバージョンが一致しない場合に発生します。具体的には、Java 11でビルドされたライブラリを、Java 10環境で使用しようとしていることを示しています。

原因

このエラーの主な原因は以下のいずれかです:

  1. プロジェクトのコンパイル設定で指定されたJavaバージョンと実際のJDKバージョンが不一致
  2. Gradleが使用するJDKバージョンの設定が不適切
  3. プロジェクト構造のJavaバージョン設定とビルド設定の不一致

解決方法

方法1: build.gradleの設定変更

build.gradleファイル内のJava互換性設定を確認し、正しいバージョンを指定します。

groovy
compileOptions {
    sourceCompatibility JavaVersion.VERSION_11
    targetCompatibility JavaVersion.VERSION_11
}

TIP

Androidプロジェクトの場合は、androidブロック内に設定します:

groovy
android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_11
        targetCompatibility JavaVersion.VERSION_11
    }
}

方法2: Kotlinプロジェクトの場合

Kotlinプロジェクトでは、jvmToolchainでターゲットバージョンを指定します:

kotlin
kotlin {
    jvmToolchain(11) // または必要なバージョン
}

方法3: IntelliJ IDEAでのGradle JDK設定

IntelliJ IDEAを使用している場合、Gradleが使用するJDKを変更します:

  1. FileSettingsBuild, Execution, DeploymentBuild ToolsGradle
  2. Gradle JVMを正しいバージョン(例:JDK 11)に変更
  3. 変更後、キャッシュをクリア:FileInvalidate CachesInvalidate and Restart

Gradle JVM設定

方法4: プロジェクト構造の設定

IntelliJ IDEAでプロジェクト全体のJDKを設定します:

  1. FileProject Structure
  2. ProjectセクションでProject SDKProject language levelを適切なバージョンに設定
  3. Modulesセクションで各モジュールのLanguage levelも確認

プロジェクト構造設定

方法5: 環境変数とシステムプロパティ

システム全体のJavaバージョン設定を確認します:

  • JAVA_HOME環境変数が正しいJDKバージョンを指しているか確認
  • ルートディレクトリにsystem.propertiesファイルを作成し、バージョンを明示:
    java.runtime.version=11

方法6: Gradleバージョンの更新

古いGradleバージョンを使用している場合、最新の安定版に更新します:

properties
# gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip

予防策

  1. 一貫性の維持: プロジェクト内のすべてのJavaバージョン設定を統一する
  2. バージョン管理: .gitignoreに加え、.sdkmanrc.tool-versionsファイルで開発環境のバージョンを管理する
  3. ドキュメント化: プロジェクトのREADMEに必要なJDKバージョンを明記する

トラブルシューティング

問題が解決しない場合は、以下の手順を試してください:

詳細なデバッグ手順
  1. ターミナルで./gradlew --versionを実行し、Gradleが使用しているJDKを確認
  2. ./gradlew build --infoで詳細なビルド情報を表示
  3. プロジェクトのgradle.propertiesファイルで明示的にJavaバージョンを指定:
    properties
    org.gradle.java.home=/path/to/jdk11

まとめ

Javaバージョンの不一致エラーは、プロジェクトの設定ファイルと開発環境の実際のJDKバージョンを一致させることで解決できます。特に複数のプロジェクトやチームで作業する場合、環境設定の一貫性を保つことが重要です。

適切な設定を行うことで、この種のビルドエラーを効果的に回避し、開発効率を向上させることができます。