当试图通过IntelliJ运行示例CorDapp (GitHub CorDapp)时,我收到以下错误:
不能将使用JVM目标1.8构建的字节码内联为当前的字节码 使用JVM目标1.6构建
如何修改IntelliJ设置,使所有字节码都使用相同的JVM目标构建?
当试图通过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。就我而言
其他回答
如果您有很多源集/模块,那么为每个源集/模块分别配置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从一开始就能正确地为它们工作。
在我的例子中,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。见附图,
对我来说,从实现'org.jetbrains.kotlin:kotlin-stdlib:1.5.30'到实现'org.jetbrains.kotlin:kotlin-stdlib:1.4.32'
如果使用Visual Studio Code**与Kotlin扩展,进入插件管理Crtl + Shift + x,输入Kotlin,然后点击管理(小齿轮)>>配置扩展设置
on Kotlin >> Compiler >> Jvm:目标-键入java版本。在我的情况下,只输入1.8
然后重新启动:-)
** vscode或只是Linux的“代码”
使用Kotlin Gradle DSL,这为我解决了这个问题。我把这个加到build.gradle.kts里了。 这是在乔尔的回答之外的
val compileKotlin: KotlinCompile by tasks
compileKotlin.kotlinOptions.jvmTarget = JavaVersion.VERSION_1_8.toString()