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

为什么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++

  • 我花了很多时间研究如何调用Maven shade插件来构建uber jar(具有所有依赖项)。我找到的大多数支持google的信息(包括许多示例和Maven文档)表明,我所要做的就是将插件包含到pom中。xml: 然后,“mvn包”(或最终调用“包”的任何其他目标)将自动触发此插件。 但不管我怎么做,真正调用插件的唯一方法似乎是:运行“mvn package shade:shade”(这似乎违背了

  • 问题内容: 我想与Jenkins一起针对Maven 2项目启动SonarQube分析。我首先在构建配置中使用了目标。 但是我刚刚找到了Jenkins的SonarQube插件。为什么要使用它?这是更好的做法,为什么? 问题答案: 您当然可以做一个简单的,这将起作用。 另一方面,还有用于Jenkins的SonarQube插件,它将使配置更加容易。例如,您将能够在一个位置(Jenkins的配置部分)定义