Spring Boot 3 + Kotlin =“无法将使用 JVM 目标 17 构建的字节码内联到使用 JVM 目标 1.8 构建的字节码中。”

Tom*_*m_E 8 java kotlin spring-boot

我正在尝试在 VS Code 中编译/运行新创建的“hello world”类型 Spring Boot 应用程序。

  • Spring boot 版本为 3.0.5
  • Java 在 pom.xml 中固定为 17
  • pom.xml 中的 Kotlin 编译器为 1.7.22
  • 我在项目 settings.json 中有 "kotlin.compiler.jvm.target": "17"

Cannot inline bytecode built with JVM target 17 into bytecode that is being built with JVM target 1.8. Please specify proper '-jvm-target' option kotlin(INLINE_FROM_HIGHER_PLATFORM)当我编译时,我在“ KotlinSampleApplication.kt ”/“ runApplication ”中收到错误。

当我从 settings.json 中删除“ kotlin.compiler.jvm.target ”时,它抱怨在 Java 17 的字节码构建中运行 JVM 1.8 目标代码(== 相反)

看起来一些 Spring Boot 依赖项是使用 Java 17 构建的,有些是使用 Java 1.8 构建的。我怎样才能让应用程序运行?

小智 -1

我可以正常运行 gradle run,但是我在运行 Junit 测试时遇到了这个问题。

然后我发现我的项目中主模块的 jvmTarget 是 17 ,但是测试模块的 jvmTarget 是 1.8 。at:“项目结构 --> 模块 --> 主要或测试 --> 目标平台为 JVM17 。

项目结构 --> 模块 --> 主要或测试

然后我修改了这个配置:

//val compileKotlin: KotlinCompile by tasks
//compileKotlin.kotlinOptions.jvmTarget = "17"
Run Code Online (Sandbox Code Playgroud)

改成 :

tasks.withType<KotlinCompile>().all {
  kotlinOptions {
    jvmTarget = "17"
  }
}
Run Code Online (Sandbox Code Playgroud)