当前位置: 首页 > 知识库问答 >
问题:

为什么我仍然得到“不能将用JVM目标1.8构建的字节码内联到正在用JVM目标1.6构建的字节码中”

汪晨
2023-03-14

我正在与Kotlin和Dagger 2开发一个Android项目。我有一个networkmodule,它应该提供一个改造的单一实例。我在其中定义了所有这些提供程序函数。

以下所有代码段都在NetworkModule中:

@Module
object NetworkModule {
   ...
}
@Provides
@JvmStatic
internal fun provideHttpRequestInterceptor(): Interceptor {
    // compiler error: Cannot inline bytecode built with JVM target 1.8 into 
    // bytecode that is being built with JVM target 1.6, 
    // please specify proper '-jvm-target' option

    return Interceptor { chain ->
        val original = chain.request()
        val requestBuilder = original.newBuilder()
        val request = requestBuilder.build()
        chain.proceed(request)
    }
}
android {
   ...
   compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

正如您在我的build.gradle中所看到的,我已经声明了构建目标是JVM1.8。为什么我还是会犯这个错误?

共有1个答案

乐正育
2023-03-14

build.gradle文件中添加kotlinoptions并将jvmtarget设置为1.8以解决此问题

kotlinOptions {
    jvmTarget = "1.8"
}
 类似资料:
  • 我在尝试向我的kotlin spring项目添加一些依赖项时遇到了一个问题。我使用Spring Boot初始化器来运行一个基本项目。 我的问题:如果我取消对jackson或Koin依赖项的注释,那么我的构建就会失败,在titile中提到了build.gradle.kts文件,这里是build.gradle.kts: 我已经有了KotlinCompile jvmTarget选项,并且在我的构建设置中

  • 当试图通过IntelliJ运行示例CorDapp(GitHub CorDapp)时,我收到以下错误: 无法将用JVM目标1.8构建的字节码内联到正在用JVM目标1.6构建的字节码中 如何修改IntelliJ设置,使所有字节码都是用相同的JVM目标构建的?

  • 当我导入此接口并尝试调用方法时,它将失败,并出现以下错误: 我已经创建了一个intellij kotlin应用程序,它的工作是正确的。是新Kotlin gradle插件的bug吗?

  • 问题内容: 字节码如何在JVM中得到验证? 问题答案: 甲骨文本身有它如何工作的一个小片段页面在这里。 基本上,JRE不信任JDK。那是因为它不知道哪个JDK编译器创建了类文件。它将类文件视为恶意文件,直到通过验证。 对此进行扩展,字节码验证是防止Sun称为“恶意编译器”的必要步骤。Sun自己的Java编译器可确保Java源代码不违反安全规则,但是,当应用程序导入代码片段时,它实际上并不 知道 该

  • 对于我目前正在进行的一个项目,IntelliJ给了我编译错误。我进入Settings>Build,Execution,Deployment>Compiler>Java,看到我的一个模块的目标字节码版本被设置为1.5,所以我将它更改为1.8并进行编译,结果它工作了。但第二天,我又犯了同样的错误。我进入设置,这个模块的目标字节码回到了1.5。我把它改成了1.8,它编译/运行得很好。这种情况现在已经发生

  • 既然c 17有了< code>std::byte,我就在寻找一种方法,将读取文件到< code>char的代码转换成读取文件到< code>byte的代码。文件包含字节,而不是一堆整数。 然后我读了这个问题和另一个问题,人们认为把文件读入<code>字节</code>是错误的,把文件读进<code<char>是正确的。 如果< code>byte不是为了访问内存而设计的,那么它的目的是什么呢?正如