无法将使用 JVM 目标 1.8 构建的字节码内联到使用 JVM 目标 1.6 构建的字节码中

Posted

技术标签:

【中文标题】无法将使用 JVM 目标 1.8 构建的字节码内联到使用 JVM 目标 1.6 构建的字节码中【英文标题】:Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6 【发布时间】:2018-08-05 22:12:56 【问题描述】:

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

无法将使用 JVM 目标 1.8 构建的字节码内联到 使用 JVM 目标 1.6 构建

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

【问题讨论】:

我能够通过将此库添加到 build.gradle dependencies compile("org.jetbrains.kotlin:kotlin-stdlib-jdk8") 来解决这个问题 @MunishChandel 这还不够。我们还必须按照以下答案的建议... 在 Linux 上指定 jvmTarget = "15" 时出现相同的错误,但同一项目在 Windows 上运行,两者都在 IntelliJ 2020.3 上。更改为 jvmTarget = "14" 并且它对两者都有效。无论哪种情况,命令行都没有错误,仅在 IntelliJ 中。 【参考方案1】:

这有助于我的项目构建,将其添加到模块 build.gradle 文件中:

compileOptions 
        sourceCompatibility 1.8
        targetCompatibility 1.8
    
    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all 
        kotlinOptions 
            jvmTarget = "1.8"
        
    

【讨论】:

【参考方案2】:

如果以上答案都不起作用,您可以在 kotlin dsl 中执行此操作

android 
...

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

【讨论】:

【参考方案3】:

只需在 build.gradle 模块中添加此代码kotlinOptions jvmTarget = '1.8'

【讨论】:

这在许多其他答案中已经提到过。【参考方案4】:

我做了所有步骤但没有成功问题是

implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.4.32'

当我更新到

implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.5.30'

当我返回时显示该问题

implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.4.32'

问题已解决

【讨论】:

重建我的项目后,它会显示此错误消息“Compose 编译器的此版本 (1.0.3) 需要 Kotlin 版本 1.5.30,但您似乎使用的是 Kotlin 版本 1.4.32,而这不是已知兼容。请修复您的配置(或suppressKotlinVersionCompatibilityCheck,但不要说我没有警告您!)。”

以上是关于无法将使用 JVM 目标 1.8 构建的字节码内联到使用 JVM 目标 1.6 构建的字节码中的主要内容,如果未能解决你的问题,请参考以下文章

JDK 1.8 JVM的变化

IntelliJ 中的目标字节码总是回落到 1.5

java基础知识之JVM

为啥 kotlin gradle 插件无法使用 1.8 目标构建?

JVM字节码与Java代码层调优

如何在运行时发出和执行 Java 字节码?