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

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

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


当前回答

您应该在build.gradle中配置如下内容

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

其他回答

在大多数情况下,这就足够了:

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

如果你已经声明了自定义Gradle任务,例如integrationTest,添加一个配置compile<YourTaskName>Kotlin:

compileIntegrationTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

在我的例子中,我通过以下两个步骤解决了这个问题

1. Go to android studio preferences -> other settings -> kotlin compiler -> set Target JVM version = 1.8 
   if it doesn't work then go to the second option.

2. In your module-level build.gradle file add 
   compileOptions {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }
    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
        kotlinOptions {
            jvmTarget = "1.8"
        }
    }

我使用Kotlin和Gradle进行正常的JVM开发,(不是android),这在build.gradle中为我工作:

allprojects {
    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
        kotlinOptions.jvmTarget = JavaVersion.VERSION_11.toString()
    }
}

当其他解决方案不适合你时(在编译器设置上更改JVM版本并将jvmTarget添加到build.gradle中),因为你的.iml文件试图强制它们的配置,你可以从项目设置中更改目标平台。

打开文件>项目结构 进入项目设置下的Facets 如果它是空的,然后点击小的+按钮 单击您的Kotlin模块/模块 将目标平台更改为JVM 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.
    }
}