java.lang.NoSuchMethodError in OkHttpClient.Builder() 从 retrofit 2.6.2 更新到 retrofit 2.9.0 后
java.lang.NoSuchMethodError in OkHttpClient.Builder() after updating from retrofit 2.6.2 to retrofit 2.9.0
早些时候我在我的项目中使用 retrofit 版本 2.6.2 来调用 api 服务并且一切正常。我正在创建自定义 Interceptor
以将 api key
添加到每个请求的 header。
NetworkInterceptor.kt
class NetworkInterceptor() : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
var request = chain.request()
request = request.newBuilder()
.addHeader("Authorization", "Client-ID ${NetworkConfig.CLIENT_ID}")
.build()
return chain.proceed(request)
}
}
我将改装库更新到 2.9.0
版本,在更新到 改装版本 2.9.0
后,我在行 java.lang.NoSuchMethodError
中得到 java.lang.NoSuchMethodError
=19=] 同时将 Interceptor
添加到 Retrofit.Builder()
.
Api.kt
interface Api {
@GET("photos")
suspend fun getPhotos(
@Query("page") pageNumber: Int,
@Query("per_page") pageSize: Int,
@Query("order_by") orderBy: String
) : Response<List<Photo>>
@GET("photos/random")
suspend fun getRandomPhoto() : Response<Photo>
companion object{
operator fun invoke(
networkInterceptor: NetworkInterceptor
) : Api{
val client = OkHttpClient.Builder() //java.lang.NoSuchMethodError
.addInterceptor(networkInterceptor)
.build()
return Retrofit.Builder()
.baseUrl(NetworkConfig.BASE_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(Api::class.java)
}
}
}
现在我不知道如何解决这个错误。任何帮助将不胜感激。
尝试重建您的项目。确保您的项目使用最新的 OkHttp 库 3.14.9.
在应用级别 build.gradle
文件的 android 块内添加编译选项:
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
早些时候我在我的项目中使用 retrofit 版本 2.6.2 来调用 api 服务并且一切正常。我正在创建自定义 Interceptor
以将 api key
添加到每个请求的 header。
NetworkInterceptor.kt
class NetworkInterceptor() : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
var request = chain.request()
request = request.newBuilder()
.addHeader("Authorization", "Client-ID ${NetworkConfig.CLIENT_ID}")
.build()
return chain.proceed(request)
}
}
我将改装库更新到 2.9.0
版本,在更新到 改装版本 2.9.0
后,我在行 java.lang.NoSuchMethodError
中得到 java.lang.NoSuchMethodError
=19=] 同时将 Interceptor
添加到 Retrofit.Builder()
.
Api.kt
interface Api {
@GET("photos")
suspend fun getPhotos(
@Query("page") pageNumber: Int,
@Query("per_page") pageSize: Int,
@Query("order_by") orderBy: String
) : Response<List<Photo>>
@GET("photos/random")
suspend fun getRandomPhoto() : Response<Photo>
companion object{
operator fun invoke(
networkInterceptor: NetworkInterceptor
) : Api{
val client = OkHttpClient.Builder() //java.lang.NoSuchMethodError
.addInterceptor(networkInterceptor)
.build()
return Retrofit.Builder()
.baseUrl(NetworkConfig.BASE_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(Api::class.java)
}
}
}
现在我不知道如何解决这个错误。任何帮助将不胜感激。
尝试重建您的项目。确保您的项目使用最新的 OkHttp 库 3.14.9.
在应用级别 build.gradle
文件的 android 块内添加编译选项:
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}