为什么我仍然得到“无法将使用JVM目标1.8构建的字节代码内联到使用JVM目标1.6构建的字节代码中”

问题描述 投票:0回答:1

我正在用Kotlin和Dagger 2开发一个Android项目。我有一个NetworkModule,它应该提供Retrofit的单例实例。在其中定义所有这些提供程序功能。

下面的所有代码段都在NetworkModule中:

@Module
object NetworkModule {
   ...
}

我想提供HttpRequestInterceptor,这是我尝试过的:

@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)
        }
}

但是上面的代码总是给我编译器错误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

在build.gradle中,我已指定

android {
   ...
   compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

我现在有两个问题:

  1. jvm 1.6和1.8分别构建了什么?如何发生(请使用示例进行解释)?

  2. 正如您在我的build.gradle中看到的那样,我已经声明了构建目标是JVM 1.8。为什么我仍然收到此错误?

android kotlin dagger-2
1个回答
0
投票

kotlinOptions文件中使用build.gradle

kotlinOptions {
    jvmTarget = "1.8"
}
© www.soinside.com 2019 - 2024. All rights reserved.