当试图通过IntelliJ运行示例CorDapp (GitHub CorDapp)时,我收到以下错误:

不能将使用JVM目标1.8构建的字节码内联为当前的字节码 使用JVM目标1.6构建

如何修改IntelliJ设置,使所有字节码都使用相同的JVM目标构建?


当前回答

正如在Kotlin网站的using-maven文档中所写的:

你只需要把<kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>放到pom.xml的属性部分

其他回答

使用Kotlin Gradle DSL,这为我解决了这个问题。我把这个加到build.gradle.kts里了。 这是在乔尔的回答之外的

val compileKotlin: KotlinCompile by tasks
compileKotlin.kotlinOptions.jvmTarget = JavaVersion.VERSION_1_8.toString()

对我来说,原因是这个配置在我的构建gradle是在一些模块和一些不是

android {  
...      
kotlinOptions {
        val options = this as KotlinJvmOptions
        options.jvmTarget = "1.8"
    }
...
android {

如果以上答案都无效,您可以在kotlin dsl中执行此操作

android {
...

    tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
        kotlinOptions {
            jvmTarget = "1.8"
        }
    }
}

如果使用Visual Studio Code**与Kotlin扩展,进入插件管理Crtl + Shift + x,输入Kotlin,然后点击管理(小齿轮)>>配置扩展设置

on Kotlin >> Compiler >> Jvm:目标-键入java版本。在我的情况下,只输入1.8

然后重新启动:-)

** vscode或只是Linux的“代码”

您可能需要同时设置compileKotlin和compileTestKotlin。 这适用于gradle 6.5.1。

compileKotlin {
    kotlinOptions {
        languageVersion = "1.2"
        apiVersion = "1.2"
        jvmTarget = "1.8"
        javaParameters = true   // Useful for reflection.
    }
}

compileTestKotlin {
    kotlinOptions {
        languageVersion = "1.2"
        apiVersion = "1.2"
        jvmTarget = "1.8"
        javaParameters = true   // Useful for reflection.
    }
}