Kotlin JVM ターゲット設定エラーの解決方法
問題概要
Flutterプロジェクトでflutter build apk
を実行した際に発生するビルドエラー:
FAILURE: Build failed with an exception.
* What went wrong:
Could not determine the dependencies of task ':nb_utils:compileReleaseKotlin'.
> Unknown Kotlin JVM target: 21
このエラーは、Kotlinコンパイラが指定されたJVMターゲットバージョン(21)を認識できない場合に発生します。主な原因として:
- KotlinプラグインのバージョンがJava 21をサポートしていない
nb_utils
モジュールがJava 21ターゲットを要求している- プロジェクト設定でJVMターゲットが明示的に定義されていない
解決方法
基本対応: build.gradle
の修正
android/app/build.gradle
ファイルを開き、以下の設定を追加します。
gradle
android {
// ...既存の設定...
// 以下のブロックを追加
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8' // Java 8をターゲットに指定
}
}
重要なポイント
JavaVersion.VERSION_1_8
とjvmTarget = '1.8'
は一致させる必要があります- 既存の
compileOptions
やkotlinOptions
がある場合は置き換え
モジュール固有の対応: nb_utils
設定
依存モジュールnb_utils
が原因の場合、そのビルド設定ファイルを修正します。
android/
ディレクトリでnb_utils
モジュールを検索- モジュールの
build.gradle
を開く - 同様の設定を追加:
gradle
android {
// ...既存の設定...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
}
高度な設定: 最新バージョン対応
Android Studioの最新版で作業している場合、Java 17ターゲットが有効(2025年1月以降のプロジェクト推奨):
gradle
android {
// ...既存の設定...
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = '17'
}
}
gradle
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
plugins {
id "com.android.application" version "8.3.2" apply false
id "org.jetbrains.kotlin.android" version "2.0.20" apply false
}
Gradleラッパー更新(オプション)
gradle/wrapper/gradle-wrapper.properties
を編集:
properties
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
エラー発生のメカニズム
このエラーが発生する根本原因:
- AndroidモジュールがJava/Kotlinバージョンを宣言していない
- 依存ライブラリが新しいJVMバージョンを要求
- Kotlinコンパイラが未サポートのバージョンを検出
モジュール依存関係
flutter_app
│
└───nb_utils (JVMターゲット21を要求)
│
└───kotlin-compiler (JVM 21を認識できない)
予防策
- プロジェクト初期設定: 新規プロジェクト作成時に
compileOptions
とkotlinOptions
を必ず設定 - 依存ライブラリ確認: 使用ライブラリがサポートするJavaバージョンを確認
- Android Studio更新: GradleプラグインとKotlinプラグインの互換性を維持
よくある質問
Q. Java 1.8とJava 17のどちらを選ぶべきですか?
A. プロジェクトの要件によります
- レガシーなライブラリ使用 → Java 1.8
- 新規プロジェクト → Java 17推奨
- Flutter関連ライブラリ → 公式ドキュメントで互換性を確認
Q. 設定変更後もエラーが消えない場合は?
以下の手順を試してください:
- 完全クリーンビルド実行:bash
flutter clean rm -rf android/build ./gradlew clean
- 依存関係のキャッシュ削除:bash
rm -rf ~/.gradle/caches
invalidate caches / restart
をAndroid Studioで実行