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

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

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


当前回答

这里所有的答案都是使用gradle,但如果有人像我这样结束在这里,需要回答maven:

    <build>
        <sourceDirectory>src/main/kotlin</sourceDirectory>
        <testSourceDirectory>src/test/kotlin</testSourceDirectory>

        <plugins>
            <plugin>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-maven-plugin</artifactId>
                <version>${kotlin.version}</version>
                <executions>
                    <execution>
                        <id>compile</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>test-compile</id>
                        <phase>test-compile</phase>
                        <goals>
                            <goal>test-compile</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <jvmTarget>11</jvmTarget>
                </configuration>
            </plugin>
        </plugins>
    </build>

从jetbrains原型到kotlin-jvm的变化是<configuration></configuration>指定jvmTarget。就我而言

其他回答

您可以通过以下方法修复此问题:

打开IntelliJ首选项 去构建,执行,部署>编译器> Kotlin编译器但其他设置> Kotlin编译器如果Android Studio > 3.4 将目标JVM版本更改为1.8 单击Apply

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

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

如果您有很多源集/模块,那么为每个源集/模块分别配置jvmTarget会很麻烦。

你可以为所有这些对象一次性配置jvmTarget,如下所示:

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

这个片段可以用在你的gradle的顶层。构建文件

修改gradle文件后,重新导入所有gradle导入。 要检查它是否工作,请打开Project Structure并验证IntelliJ是否正确地将JVM 1.8分配给所有Kotlin-Modules。它应该是这样的:

我不建议直接在IntelliJ中更改平台,因为任何第一次克隆您的项目的人都可能面临同样的问题。在gradle中正确配置它的好处是,IntelliJ从一开始就能正确地为它们工作。

这有助于我的项目构建,将此添加到模块构建。gradle文件:

compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }
    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"
}