当前位置: 首页 > 知识库问答 >
问题:

将Gradle build升级到Kotlin 1.7.0后的“未解析引用:sourceCompatibility”

呼延源
2023-03-14

下面的一些答案是,无法将使用JVM目标1.8构建的字节码内联到使用JVM目标1.6构建的字节码中,我有一个Kotlin Gradle DSL脚本,其中包含

tasks.compileKotlin {
    sourceCompatibility = JavaVersion.VERSION_11.toString()
    targetCompatibility = JavaVersion.VERSION_11.toString()

    kotlinOptions {
        jvmTarget = "11"
    }
}

但升级到Kotlin 1.7.0后,我遇到了一个例外

Unresolved reference: sourceCompatibility
Unresolved reference: targetCompatibility

我很清楚,他们显然已经删除了这些,因为我发现它列在https://kotlinlang.org/docs/whatsnew17.html#changes-in-compile-tasks

我的问题是,我用什么来代替它?我应该如何确保保持兼容性?

共有1个答案

岳君之
2023-03-14

设置JVM目标、Kotlin API和语言版本可以通过配置所有KotlinCompile任务来完成。

// build.gradle.kts
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
  kotlin("jvm") version "1.7.0"
}

// configure all Kotlin compilation tasks, 
// using the Gradle configuration avoidance API
tasks.withType<KotlinCompile>().configureEach {

  kotlinOptions {
    jvmTarget = "11"
    apiVersion = "1.6"
    languageVersion = "1.6"
  }

  // you can also add additional compiler args, 
  // like opting in to experimental features
  kotlinOptions.freeCompilerArgs += listOf(
    "-opt-in=kotlin.RequiresOptIn",
  )
}
  • apiVersion将声明的使用限制为来自指定版本的捆绑库的声明

所有编译器选项都记录在这里。其他构建工具也有额外的留档,如Maven和Ant。

您可以使用新的工具链功能来设置将用于编译项目的Java版本。

// build.gradle.kts
kotlin {
  jvmToolchain {
    languageVersion.set(JavaLanguageVersion.of("11"))
  }
}

阅读更多:Gradle Java工具链支持

 类似资料:
  • 升级到最新的角度CLI后。我有以前没有的错误。其中之一是:referenceerror:未定义firebase 它指的是我的用户服务中的这一行: 如何解决这个问题?

  • 我升级了我的AS,错误开始出现 我找了所有的地方,但我不能解决问题 这是我的构建。gradle(项目),脱机是未检查的,我做了无效和重启没有工作, 什么意思不能解决依赖?这是我在gradle(应用程序)中添加存储库时得到的结果

  • 我遇到了一个错误 导入语句如下所示 Kotlin版本:1.1.51 提前致谢:)

  • 在从删除kotlin_extensions切换到视图绑定之后,我在onBindViewHolder方法中收到了一个“Unresolded reference:MyViewholder”,当我将“MyViewholder”替换为“holder”时,它会给我一个“Unresolded reference:bind”。我怎么解决这个问题。 MyAdapter 我试着阅读Android Studio的官方

  • 在将我的应用程序中的Vaadin从7.1.8升级到7.5.3之后,我遇到了一个奇怪的问题。 我的登录servlet无法处理任何请求,因为我认为Vaadin的安全密钥无效。 Vaadin现在使用elemental.json,当使用的第一次与应用程序交互时,我收到一个错误。 我浏览过SO和Vaadin论坛,我似乎是唯一有问题的人:( 任何帮助都将不胜感激。谢谢 这是堆栈 14:09:31,232 SE

  • 我正在Android Studio中尝试Kotlin和Kotlin Android扩展。我在Ubuntu 14.04上的Android Studio v1.5.1和OS X El Capitan上的Android Studio v1.5.1中都进行了尝试,得到了相同的结果。 下面是我正在做的事情: null 然后进入生成的content_main.xml文件,并为“hello World!”添加一