Skip to content

Kotlin JVMターゲット21エラーの解決法(Android Studio Ladybug)

問題説明

Android Studioを最新版(Ladybug / 2024.2.2以降)へアップデート後、プロジェクトのコンパイル時に以下のエラーが発生します:

Unknown Kotlin JVM target: 21

この問題の特徴:

  • kaptまたはksp使用時に頻発
  • 設定でjvmTarget = "17"を指定済みでも発生
  • KotlinオプションとJavaバージョン設定は一貫している(例:VERSION_17)
  • Android Studioアップデート前は正常に動作していた

根本原因: Android Studioのアップデートにより:

  1. デフォルトのGradle JDKがJVM 21に変更される
  2. Kotlinコンパイラが新しいターゲットを認識できない
  3. プロジェクト設定と実際のビルド環境に不一致が発生

効果的な解決策

方法1: Gradle JDK設定の変更(推奨)

最も確実な解決法は、Gradleが使用するJDKを明示的に指定することです:

  1. Android Studioで File > Settings を開く
  2. Build, Execution, Deployment > Build Tools > Gradle を選択
  3. Gradle JDKjbr-17(JetBrains Runtime 17)に変更
shell
設定例:
Gradle JDK: JetBrains Runtime version 17.0.x
  1. Apply をクリックし設定を保存

重要

プロジェクト固有の設定ではなく、IDE全体の設定を変更する必要があります。この変更は全てのプロジェクトに適用されます。

方法2: build.gradleの設定強化

モジュールレベルのbuild.gradle(Kotlin DSL: build.gradle.kts)に以下を追記:

kotlin
android {
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }
    
    kotlinOptions {
        jvmTarget = "17"
    }
    
    // この設定が解決の鍵!
    kotlin {
        jvmToolchain(17)
    }
}

変更ポイント:

  • jvmToolchain(17)の追加でJVMバージョンを明示
  • Kotlinコンパイラに確実にターゲットを伝達
  • compileOptionskotlinOptionsのバージョン一致必須(全て17)

方法3: Kotlinプラグインバージョンの更新

プロジェクトレベルのbuild.gradleでKotlinプラグインを更新:

gradle
buildscript {
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.21" // 適切なバージョン
    }
}

対応バージョン目安:

Android Studioバージョン推奨Kotlinバージョン
Ladybug (2024.2.2)2.0.0 以上
Nharwal以降2.0.21 以上

注意

以下の不一致があるとエラーが再発します:

  • モジュール間でのKotlinバージョン差異
  • Android Gradle Plugin(AGP)とKotlinの非互換性
    gradle
    // 推奨組み合わせ例
    id "com.android.application" version "8.7.1"
    id "org.jetbrains.kotlin.android" version "2.0.20"

追加のトラブルシューティング

キャッシュクリア手順

設定変更後にエラーが解消しない場合:

  1. プロジェクトの.gradleフォルダを削除
  2. Android Studioで File > Invalidate Caches 選択
  3. Rebuild Project を実行

Flutterプロジェクト向け設定

android/app/build.gradleに以下を追加:

gradle
kotlinOptions {
    jvmTarget = '17' // 1.8でないことを確認
}

根本原因と予防策

エラー発生メカニズム

再発防止のポイント

  1. Android Studioアップデート後、必ずGradle JDK設定を確認
  2. jvmToolchain()設定を習慣的に追加
  3. プロジェクトのKotlinバージョンを定期的に更新
  4. 各モジュールの設定整合性をチェック

まとめ

Unknown Kotlin JVM target: 21エラーは、Android Studioの自動設定変更とプロジェクト設定の不一致によって発生します。以下の3アクションで永続的な解決が可能です:

  1. Gradle JDKjbr-17 に設定変更
  2. build.gradlejvmToolchain(17) を明記
  3. Kotlinプラグイン を 2.0.0 以降に更新

これらの対策を実施後、プロジェクトの再ビルドを行えばエラーは解消します。特に大規模プロジェクトでは、全モジュールの設定統一が重要です。