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

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

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


当前回答

给Eclipse用户的另一个提示。在仔细检查了其他用户指出的jvm目标设置后,我仍然有同样的问题,这是由于缺少Kotlin运行时库造成的。例如,当使用spring initializr创建一个项目时,它不会自动添加。要添加它:右键单击您的项目->构建路径->添加库…->用户库,并添加org.jetbrains.kotlin.core.KOTLIN_CONTAINER

确保你刷新你的gradle项目之后(右击-> gradle ->刷新gradle项目)

其他回答

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

android {
...

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

请将此代码添加到app/build.gradle中的android部分

compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_1_8
    }

您可能需要同时设置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.
    }
}

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

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

在我的例子中,jvmTarget已经在构建中设置了。Gradle文件如下。

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

但我的问题依然存在。 最后,在Preferences > Other Settings > Kotlin Compiler >目标JVM版本后,将目标JVM版本从1.6更改为1.8。见附图,