由于 jvm 目标错误而构建失败

lel*_*cia 8 android jvm gradle kotlin

使用 Gradle 8 和 Kotlin 1.8 编译时出现错误

compileDebugJavaWithJavac' task (current target is 1.8) and 'kaptGenerateStubsDebugKotlin' task (current target is 17) 
jvm target compatibility should be set to the same Java version.
Run Code Online (Sandbox Code Playgroud)

这是一个多模块项目,问题仅发生在该模块上。但是,该模块也使用相同的 JVM 目标和兼容性目标。但这是怎么发生的呢?

这是我的这个模块的 Gradle:

plugins {
    id 'com.android.library'
    alias libs.plugins.kotlin.android.plugin
    alias libs.plugins.kotlin.kapt.plugin
    alias libs.plugins.dagger.hilt.module.plugin
}

android {
    namespace 'com.lelestacia.network'
    compileSdk 33

    defaultConfig {
        minSdk 24

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles "consumer-rules.pro"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 7

您需要指定模块编译版本的兼容性以适合 kaptGenerateStubsDebugKotlin。

compileOptions {
    sourceCompatibility JavaVersion.VERSION_17
    targetCompatibility JavaVersion.VERSION_17
}
Run Code Online (Sandbox Code Playgroud)

但对于最新版本的 Gradle 来说这还不够,所以你必须使用 Gradle JVM 工具链功能。将以下配置添加到模块 gradle 文件的 android 部分

java {
   toolchain {
       languageVersion.set(JavaLanguageVersion.of(17))
   }
}
kotlinOptions {
    jvmTarget = '17'
}
Run Code Online (Sandbox Code Playgroud)


Hal*_*zel 4

我遇到类似的错误。这些过程对我有用。

build.gradle(:project)

plugins {
    id 'com.android.application' version '8.0.0' apply false
    id 'com.android.library' version '8.0.0' apply false
    id 'org.jetbrains.kotlin.android' version '1.8.10' apply false
}
Run Code Online (Sandbox Code Playgroud)

build.gradle(:app)

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

Android Studio - Gradle 项目

在此输入图像描述