Caused by: org.gradle.api.GradleException: ‘compileDebugJavaWithJavac‘ task (current target is 1.8)

这个异常的核心原因是Java和Kotlin编译任务目标的Java版本不一致。具体来说,compileDebugJavaWithJavac任务(Java编译任务)的目标版本是 Java 8 (1.8),而compileDebugKotlin任务(Kotlin编译任务)的目标版本是 Java 17 (17)。在一个项目中,Java和Kotlin的编译任务应当设置为相同的JVM目标版本,以确保兼容性和避免潜在问题。

为了修复这个问题,你需要在项目的build.gradle文件中为Java和Kotlin设置相同的JVM目标版本。以下是如何统一设置Java和Kotlin编译任务目标Java版本的方法:

对于Kotlin:

你可以通过在模块级别的build.gradlebuild.gradle.kts对于Kotlin DSL)文件中设置Kotlin的jvmTarget属性来指定Kotlin编译任务的目标Java版本。例如,要将目标版本设为Java 17,可以这样做:

kotlin {
    // 对于Groovy DSL
    sourceSets {
        main.kotlin.srcDirs += 'src/main/kotlin'
        test.kotlin.srcDirs += 'src/test/kotlin'
    }
    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
        kotlinOptions {
            jvmTarget = "17"
        }
    }
}

或如果你使用的是Kotlin DSL:

tasks.withType<KotlinCompile> {
    kotlinOptions.jvmTarget = "17"
}

对于Java:

你也需要确保Java编译任务使用相同版本的JVM。在Gradle中,你可以通过设置sourceCompatibilitytargetCompatibility属性来指定Java的版本。将它们设置为Java 17如下:

android {
    ...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }

    // 如果你使用的是Android项目,还需要在这里设置
    kotlinOptions {
        jvmTarget = "17"
    }
}

上述配置确保了Java和Kotlin编译任务都将使用Java 17作为目标版本。请注意,如果你的项目中还没有使用Java 17,你可能需要确保你的开发环境中已经安装了相应版本的JDK,并且JAVA_HOME环境变量被正确设置指向该JDK。

调整完这些设置后,请尝试重新构建你的项目。如果构建成功,这意味着Java和Kotlin编译任务的JVM目标版本现在是一致的。如果你遇到任何其他问题,请检查你的项目配置以确保所有部分均正确设置了期望的Java版本。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值