问题描述
我正在尝试使用改造进行HTTP调用。使用koin注射。但是出现了错误
AppModule
val appModule = module {
viewmodel { Mainviewmodel() }
viewmodel { Searchviewmodel() }
single { HttpRepository() }
single { HttpService() }
single { ApiHelper() }
single { AdapterFactory() }
single {
val gson: Gson = GsonBuilder()
.enableComplexMapKeySerialization()
.serializeNulls()
.setDateFormat(DateFormat.LONG)
.create()
GsonConverterFactory.create(gson)
} bind GsonConverterFactory::class
single {
val client = OkHttpClient.Builder()
client.build()
}
single {
val builder = Retrofit.Builder()
.addConverterFactory(get<GsonConverterFactory>())
.client(get())
builder
}
}
应用
class MyApp : Application(){
override fun onCreate() {
super.onCreate()
startKoin {
androidLogger()
androidContext(this@MyApp)
modules(appModule)
}
}
存储库
class HttpRepository : KoinComponent {
private val httpService: HttpService by inject()
private val retrofitBuilder: Retrofit.Builder by inject()
private val apiHelper: ApiHelper by inject()
private var serviceInterface: IServiceInterface
init {
serviceInterface =
retrofitBuilder.baseUrl("http://httpbin.org/").build().create(IServiceInterface::class.java)
}
java.lang.BootstrapMethodError: Exception from call site #4 bootstrap method
at okhttp3.internal.Util.<clinit>(Util.java:87)
at okhttp3.internal.Util.immutableList(Util.java:234)
at okhttp3.OkHttpClient.<clinit>(OkHttpClient.java:124)
at okhttp3.OkHttpClient$Builder.<init>(OkHttpClient.java:449)
at com.socnetwork.AppModuleKt$appModule$1$8.invoke(AppModule.kt:39)
at com.socnetwork.AppModuleKt$appModule$1$8.invoke(UnkNown Source:4)
at org.koin.core.instance.DeFinitionInstance.create(DeFinitionInstance.kt:54)
at org.koin.core.instance.SingleDeFinitionInstance.get(SingleDeFinitionInstance.kt:40)
at org.koin.core.deFinition.BeanDeFinition.resolveInstance(BeanDeFinition.kt:70)
at org.koin.core.scope.Scope.resolveInstance(Scope.kt:165)
at org.koin.core.scope.Scope.get(Scope.kt:128)
at com.socnetwork.AppModuleKt$appModule$1$9.invoke(AppModule.kt:58)
at com.socnetwork.AppModuleKt$appModule$1$9.invoke(UnkNown Source:4)
at org.koin.core.instance.DeFinitionInstance.create(DeFinitionInstance.kt:54)
at org.koin.core.instance.SingleDeFinitionInstance.get(SingleDeFinitionInstance.kt:40)
at org.koin.core.deFinition.BeanDeFinition.resolveInstance(BeanDeFinition.kt:70)
at org.koin.core.scope.Scope.resolveInstance(Scope.kt:165)
at org.koin.core.scope.Scope.get(Scope.kt:128)
at com.socnetwork.http.HttpRepository$$special$$inlined$inject$2.invoke(Scope.kt:327)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at com.socnetwork.http.HttpRepository.getRetrofitBuilder(UnkNown Source:2)
at com.socnetwork.http.HttpRepository.<init>(HttpRepository.kt:18)
at com.socnetwork.AppModuleKt$appModule$1$3.invoke(AppModule.kt:23)
at com.socnetwork.AppModuleKt$appModule$1$3.invoke(UnkNown Source:4)
at org.koin.core.instance.DeFinitionInstance.create(DeFinitionInstance.kt:54)
at org.koin.core.instance.SingleDeFinitionInstance.get(SingleDeFinitionInstance.kt:40)
at org.koin.core.deFinition.BeanDeFinition.resolveInstance(BeanDeFinition.kt:70)
at org.koin.core.scope.Scope.resolveInstance(Scope.kt:165)
at org.koin.core.scope.Scope.get(Scope.kt:128)
at com.socnetwork.viewmodel.Searchviewmodel$$special$$inlined$inject$1.invoke(Scope.kt:327)
at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
at com.socnetwork.viewmodel.Searchviewmodel.getService(UnkNown Source:2)
at com.socnetwork.viewmodel.Searchviewmodel.access$getService$p(Searchviewmodel.kt:14)
at com.socnetwork.viewmodel.Searchviewmodel$getUsers$1.invokeSuspend(Searchviewmodel.kt:25)
at com.socnetwork.viewmodel.Searchviewmodel$getUsers$1.invoke(UnkNown Source:10)
at com.socnetwork.viewmodel.Searchviewmodel$getNetworkResult$1.invokeSuspend(Searchviewmodel.kt:36)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.dispatchedKt.resumeCancellable(dispatched.kt:457)
at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable(Cancellable.kt:26)
at kotlinx.coroutines.Coroutinestart.invoke(Coroutinestart.kt:109)
at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:154)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:54)
at kotlinx.coroutines.BuildersKt.launch(UnkNown Source:1)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default(Builders.common.kt:47)
at kotlinx.coroutines.BuildersKt.launch$default(UnkNown Source:1)
at com.socnetwork.viewmodel.Searchviewmodel.getNetworkResult(Searchviewmodel.kt:35)
at com.socnetwork.viewmodel.Searchviewmodel.getUsers(Searchviewmodel.kt:25)
at com.socnetwork.ui.SearchFragment.getUsers(SearchFragment.kt:53)
at com.socnetwork.ui.SearchFragment.onViewCreated(SearchFragment.kt:49)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:332)
at androidx.fragment.app.FragmentManager.movetoState(FragmentManager.java:1187)
at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224)
2020-09-24 11:50:32.361 700-700/com.socnetwork E/AndroidRuntime: at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2629)
at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577)
at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2722)
at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:346)
at androidx.fragment.app.FragmentManager.movetoState(FragmentManager.java:1188)
at androidx.fragment.app.FragmentManager.movetoState(FragmentManager.java:1356)
at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434)
at androidx.fragment.app.FragmentManager.movetoState(FragmentManager.java:1497)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625)
at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577)
at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:247)
at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:541)
at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:210)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1391)
at android.app.Activity.performStart(Activity.java:7157)
at android.app.ActivityThread.handleStartActivity(ActivityThread.java:2937)
at android.app.servertransaction.TransactionExecutor.performlifecycleSequence(TransactionExecutor.java:180)
at android.app.servertransaction.TransactionExecutor.cycletoPath(TransactionExecutor.java:165)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.classCastException: Bootstrap method returned null
... 82 more
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)