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

为什么kotlin gradle插件不能用1.8目标构建?

东门修文
2023-03-14
buildscript {
    ext.kotlin_version = '1.2.10'

    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

group 'com.ali'
version '1.0-SNAPSHOT'

apply plugin: 'java'
apply plugin: 'kotlin'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
public interface MyMath {
    static int myAbs(int input) {
        return Math.abs(input);
    }
}

当我导入此接口并尝试调用myabs方法时,它将失败,并出现以下错误:

Error:(6, 12) Kotlin: Calls to static methods in Java interfaces are prohibited in JVM target 1.6. Recompile with '-jvm-target 1.8'

我已经创建了一个intellij kotlin应用程序,它的工作是正确的。是新Kotlin gradle插件的bug吗?

共有1个答案

程祯
2023-03-14

我认为这对那些在Mac上使用Android Studio3.2的用户会有帮助。

要更改Kotlin编译器目标JVM版本,您应该转到Android Studio->Preferences->Kotlin编译器,然后从下拉菜单中选择更改目标JVM版本。

不管怎样,我仍然得到以下错误

已解决

将以下内容添加到我的build.gradle解决了这个问题:

android {
    kotlinOptions {
        jvmTarget = '1.8'
    }
}

关于这个和其他Gradle配置选项:https://kotlinlang.org/docs/reference/using-Gradle.html

import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions

(kotlinOptions as KotlinJvmOptions).apply {
    jvmTarget = JavaVersion.VERSION_1_8.toString()
}
 类似资料:
  • 我正在与Kotlin和Dagger 2开发一个Android项目。我有一个,它应该提供一个改造的单一实例。我在其中定义了所有这些提供程序函数。 以下所有代码段都在中: 正如您在我的build.gradle中所看到的,我已经声明了构建目标是JVM1.8。为什么我还是会犯这个错误?

  • 在C中,您可以将许多内容声明为:变量、函数(包括成员函数和运算符)、构造函数,以及从C 1z开始的语句和lambda表达式。但是,声明析构函数会导致错误: 我的问题: 为什么不能将析构函数标记为constexpr 如果我没有提供析构函数,那么隐式生成的析构函数是constexpr吗 如果我声明一个默认析构函数(

  • 我在尝试向我的kotlin spring项目添加一些依赖项时遇到了一个问题。我使用Spring Boot初始化器来运行一个基本项目。 我的问题:如果我取消对jackson或Koin依赖项的注释,那么我的构建就会失败,在titile中提到了build.gradle.kts文件,这里是build.gradle.kts: 我已经有了KotlinCompile jvmTarget选项,并且在我的构建设置中

  • 前面说了这么多 Qt 的介绍,相信一定有很多朋友还是要问,那么我们为什么要选择 Qt 做开发呢,它到底有哪些突出的优势呢,下面就是笔者给出的答案。 Qt 是基于 C++ 的一种语言扩展(Extention) C/C++ 目前还是一种很多人都在学习的语言. Qt 的好处就在于 Qt 本身可以被称作是一 种 C++ 的延伸。Qt 的类都是用 C++ 写出来的。这也就是说, Qt 本身已经继承了 C++

  • 问题内容: 我的密码 我的问题,为什么? 用更严肃的语气:我想要一个答案或参考,详细说明使用加星标表达的所有来龙去脉,因为有时我会对它的行为感到惊讶… 附录 为了反映紧随我的问题之后的一些启发性评论,我添加了以下代码 (在发布原始问题之前,我已经尝试过该部分,但是由于错误与主演无关,因此我将其省略了。) 在python≥3.5中有一种语法“可以正常工作”,但是尽管如此,我还是希望了解一下。 问题答

  • 我试图使用Java8Javadoc工具,但它抱怨是一个未知标记: 我看到有一些方法可以禁用doclint,但我真的想知道哪些标签列表被支持(或者为什么这个不支持)。 更多信息在这个问题,这个问题和从这个博文。