构建错误:“kspDebugKotlin”任务(当前目标是 17)

Soh*_*med 30 android build gradle kotlin kapt

任务“:app:kspDebugKotlin”执行失败。无法构建ksp

“compileDebugJavaWithJavac”任务(当前目标是 1.8)和“kspDebugKotlin”任务(当前目标是 17)jvm 目标兼容性应设置为相同的 Java 版本。

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
    jvmTarget = '1.8'
}
Run Code Online (Sandbox Code Playgroud)

dei*_*ive 22

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }
}
Run Code Online (Sandbox Code Playgroud)

添加(与android{}同级):

kotlin {
    jvmToolchain(8)
}
Run Code Online (Sandbox Code Playgroud)


Soh*_*med 20

我不知道为什么它会引起问题,但我添加了它gradle(project)并且它起作用了。

allprojects {
    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
        kotlinOptions {
            jvmTarget = "1.8"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Soh*_*med 14

对于那些仍然面临问题的人。尝试将 Java 和 Kotlin 的版本更新为相同版本,17如下所示:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_17
    targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
    jvmTarget = '17'
}
Run Code Online (Sandbox Code Playgroud)


小智 7

allprojects {
    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
        kotlinOptions.jvmTarget = "1.8"
    }

    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KaptGenerateStubs).configureEach {
        kotlinOptions.jvmTarget = "1.8"
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这个对我有用,还需要“KaptGenerateStubs” (2认同)

and*_*2ag 6

KSP 版本必须与您项目的 Kotlin 版本保持一致。

根据官方文档

首先,在顶级 build.gradle.kts 文件中声明 KSP 插件。确保您选择的 KSP 版本与您项目的 Kotlin 版本一致。您可以在 KSP GitHub 页面上找到版本列表。

如果您使用 Kotlin 1.8.0,请确保使用/降级到 KPS 1.8.0-1.0.8,因为1.8.0-1.0.9存在已知错误

这就是我解决我的案例中的问题的方法。

// match Kotlin version 1.8.0 and use KPS 1.0.8, not 1.0.9
classpath("com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin:1.8.0-1.0.8") 
Run Code Online (Sandbox Code Playgroud)
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_1_8.toString()
    }
Run Code Online (Sandbox Code Playgroud)