build.gradle.kts で 'compileJava' タスク (11) と 'compileKotlin' タスク (1.8) の JVM ターゲット互換性を同じ Java バージョンに設定するにはどうすればよいでしょうか? 質問する

build.gradle.kts で 'compileJava' タスク (11) と 'compileKotlin' タスク (1.8) の JVM ターゲット互換性を同じ Java バージョンに設定するにはどうすればよいでしょうか? 質問する

ビルド.gradle.kts

buildscript {
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
    dependencies {
        classpath ("com.android.tools.build:gradle:7.0.2")
        classpath ("org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.30")
        classpath("gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:${Versions.spotbugsGradlePluginVersion}")
        classpath("se.bjurr.violations:violations-gradle-plugin:${Versions.violationsVersion}")

    }
}
//android {
//    compileOptions {
//        sourceCompatibility = JavaVersion.VERSION_11
//                targetCompatibility = JavaVersion.VERSION_11
//    }
//
//    kotlinOptions {
//        jvmTarget = JavaVersion.VERSION_11.toString()
//    }
//}
plugins {
    `maven-publish`
    `java-gradle-plugin`
    `kotlin-dsl`
    id ("io.gitlab.arturbosch.detekt") version ("1.18.1")
}
repositories {
    google()
    mavenCentral()
    gradlePluginPortal()
}

dependencies {
    compileOnly(gradleApi())
    testImplementation(gradleTestKit())
    testImplementation("junit:junit:${Versions.jUnitVersion}")
}
val generatedSources = tasks.register<GenerateVersionsFileTask>("generateSources")

次のエラーが発生します:

エラー: 'compileJava' タスク (現在のターゲットは 11) と 'compileKotlin' タスク (現在のターゲットは 1.8) jvm ターゲットの互換性は、同じ Java バージョンに設定する必要があります。

コメントを外すとandroid {}、次のようになります:

エラー: スクリプトのコンパイル エラー:

 Line 15: android {
           ^ Unresolved reference: android

ベストアンサー1

エラーが表示されているバージョンにも注意する必要があります。私の場合は次のとおりです。

原因: org.gradle.api.GradleException: 'compileDebugJavaWithJavac' タスク (現在のターゲットは 1.8 ) および 'compileDebugKotlin' タスク (現在のターゲットは 17 ) jvm ターゲットの互換性は、同じ Java バージョンに設定する必要があります。

つまり、Android Studio IDE は 17 を使用しています (ファイル メニュー -> プロジェクト構造 -> SDK の場所 -> JDK の場所で確認できます)

そして、Gradle ファイルでは 1.8 を使用しています。

だからあなたは変わる必要がある

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

そして

kotlinOptions {
    jvmTarget = '1.8'
}

compileOptions {
    sourceCompatibility JavaVersion.VERSION_17
    targetCompatibility JavaVersion.VERSION_17
}

そして

kotlinOptions {
    jvmTarget = '17'
}

ご了承ください

エラーに17と表示されたので、私も17に切り替えました。

これは、Gradle を 8.0 にアップグレードしたときに発生しました。

リリースの問題に注意してください。手順を実行する前にバックアップを取ってください。リリース aab で問題が発生する可能性があります。

この手順が完了したら、リリースapkを確認してください。R8では次のようなことが期待されているからです。これ

おすすめ記事