A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
Kotlin プロジェクトのビルド時に遭遇する「A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution」エラーは、kapt(Kotlin Annotation Processing Tool)の実行中に問題が発生したことを示しています。このエラーは様々な原因で発生する可能性があり、効果的な解決策を見つけることが重要です。
問題の詳細
このエラーの主な特徴は以下の通りです:
- Kotlin コードのビルドプロセス中に発生
- kapt タスクの実行に失敗
- エラーメッセージが詳細な情報を提供しない場合が多い
- 以下のような追加エラーが同時に発生することがある:
- ANTLR バージョンの不一致
- シンボルが見つからないエラー
- データバインディング関連のクラスが見つからない
主な解決策
1. JDK 設定の確認と変更
Android Studio の JDK 設定が適切でない場合にこのエラーが発生することがあります。
Android Studio での JDK 設定方法
- File → Settings(Mac: Android Studio → Preferences)を開く
- Build, Execution, Deployment → Build Tools → Gradle を選択
- Gradle JDK オプションで Embedded JDK を選択
WARNING
JDK 16以上のバージョンを使用している場合、kapt との互換性問題が発生する可能性があります。JDK 11を使用することを推奨します。
2. 依存関係のバージョン不一致の解消
ライブラリ間のバージョン不一致はこのエラーの一般的な原因です。
Room ライブラリの場合
// 非推奨(エラーの原因になる可能性)
implementation "android.arch.persistence.room:runtime:1.1.1"
kapt "android.arch.persistence.room:compiler:1.1.1"
// 推奨(AndroidXを使用)
def room_version = "2.6.1"
implementation "androidx.room:room-runtime:$room_version"
implementation "androidx.room:room-ktx:$room_version"
kapt "androidx.room:room-compiler:$room_version"
Hilt 依存性注入ライブラリの場合
// メイン依存関係
implementation("com.google.dagger:hilt-android:2.50")
kapt("com.google.dagger:hilt-android-compiler:2.50")
kapt("androidx.hilt:hilt-compiler:1.2.0")
// テスト依存関係(バージョン一致が重要)
androidTestImplementation("com.google.dagger:hilt-android-testing:2.50")
kaptAndroidTest("com.google.dagger:hilt-android-compiler:2.50")
TIP
全ての関連ライブラリのバージョンを一致させることで、互換性問題を回避できます。
3. M1/M2 Mac ユーザー向けの特別な対策
Appleシリコン搭載Macでは、Roomライブラリを使用する際に追加の依存関係が必要です。
// M1/M2 MacでRoomを使用する場合
kapt("org.xerial:sqlite-jdbc:3.45.1.0")
implementation("androidx.room:room-ktx:2.6.1")
kapt("androidx.room:room-compiler:2.6.1")
4. Kotlin プラグインのバージョン調整
Android Studioが自動的にKotlinプラグインを更新することがあり、これが問題を引き起こす場合があります。
// build.gradle(プロジェクトレベル)でバージョンを明示的に指定
buildscript {
dependencies {
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21")
}
}
5. 権限とキャッシュの問題解決
Windowsでユーザーアカウントを変更した場合、権限問題が発生することがあります。
# 権限問題が疑われる場合、.gradleキャッシュを削除
rm -rf C:\Users\[ユーザー名]\.gradle\caches
またはAndroid Studioで File → Invalidate Caches / Restart を実行します。
デバッグ手法
エラーの根本原因を特定するために、以下のコマンドを実行して詳細情報を取得します。
# スタックトレースの表示
./gradlew build --stacktrace
# 詳細なログ出力
./gradlew build --info
# kaptタスクをスキップしてビルド(問題の切り分け)
./gradlew build -x kaptKotlin -x kaptTestKotlin
その他の一般的な解決策
Gradleプラグインの更新:
kotlin// build.gradle(プロジェクトレベル) classpath "com.android.tools.build:gradle:7.4.2"
プロジェクトの依存関係更新:
- File → Project Structure → Suggestions で更新が必要な依存関係を確認
データバインディングの確認:
- レイアウトファイルの変数定義が正しいか確認
- インポート文が正しいか確認
エンティティクラスの確認(Room使用時):
@PrimaryKey
アノテーションの付け忘れがないか確認- enum型の使用に注意(代わりにordinalを使用することを検討)
まとめ
「A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution」エラーは様々な原因で発生しますが、以下の手順で体系的に対処することで解決できる場合がほとんどです:
- JDK設定の確認(Embedded JDKを使用)
- 全ての依存関係のバージョン一致確認
- プロジェクトのキャッシュ削除と再ビルド
- スタックトレースによる詳細なエラー情報の取得
- プラットフォーム固有の対策(M1/M2 Macの場合)
問題が解決しない場合は、特定のライブラリ(Room, Hilt, Moshiなど)のドキュメントを確認し、最新の互換性情報を参照してください。