代码之家  ›  专栏  ›  技术社区  ›  Andrey Danilov

Koin安卓:org.koin.error.nobeandefoundexception

  •  3
  • Andrey Danilov  · 技术社区  · 8 年前

    java.lang.RuntimeException: Unable to create application com.app.name.application.MainApplication: org.koin.error.BeanInstanceCreationException: Can't create bean Bean[class=com.app.name.general.preferences.Preferences] due to error :
        org.koin.error.NoBeanDefFoundException: No definition found to resolve type 'android.app.Application'. Check your module definition
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5830)
        at android.app.ActivityThread.-wrap1(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1673)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:172)
        at android.app.ActivityThread.main(ActivityThread.java:6637)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
     Caused by: org.koin.error.BeanInstanceCreationException: Can't create bean Bean[class=com.app.name.general.preferences.Preferences] due to error :
        org.koin.error.NoBeanDefFoundException: No definition found to resolve type 'android.app.Application'. Check your module definition
        at org.koin.core.instance.InstanceFactory.createInstance(InstanceFactory.kt:63)
        at org.koin.core.instance.InstanceFactory.retrieveInstance(InstanceFactory.kt:26)
        at org.koin.KoinContext$resolveInstance$$inlined$synchronized$lambda$1.invoke(KoinContext.kt:85)
        at org.koin.KoinContext$resolveInstance$$inlined$synchronized$lambda$1.invoke(KoinContext.kt:23)
        at org.koin.ResolutionStack.resolve(ResolutionStack.kt:23)
        at org.koin.KoinContext.resolveInstance(KoinContext.kt:80)
        at com.app.name.constants.EnvironmentConstants$initEnvironmentVariables$$inlined$getKoinInstance$1$1.invoke(KoinComponent.kt:114)
        at kotlin.SynchronizedLazyImpl.getValue(Lazy.kt:131)
        at com.app.name.constants.EnvironmentConstants$initEnvironmentVariables$$inlined$getKoinInstance$1.getValue(Unknown Source:7)
        at com.app.name.constants.EnvironmentConstants.initEnvironmentVariables(EnvironmentConstants.kt:180)
        at com.app.name.application.MainApplication.onCreate(MainApplication.kt:59)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1119)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5827)
            ... 8 more
    

    但是所有的依赖都是正确的。

    androidApplication() 参数工作正常。

        startKoin(listOf(
                imageManagerModule,
                databaseRepositoryModule
        ))
    

    val imageManagerModule: Module = applicationContext {
        bean { ImageManagerImpl() as ImageManager }
    }
    

    但是偏好崩溃了

    val preferencesModule: Module = applicationContext {
        bean { PreferencesImpl(androidApplication()) as Preferences }
    }
    
    2 回复  |  直到 7 年前
        1
  •  4
  •   Andrey Danilov    8 年前

    startKoin

    import org.koin.standalone.StandAloneContext.startKoin
    

    import org.koin.android.ext.android.startKoin
    

        2
  •  0
  •   Priya    7 年前

    // Room implementation "android.arch.persistence.room:runtime:1.1.1" kapt "android.arch.persistence.room:compiler:1.1.1" .