question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

android.app.Application cannot be cast to org.kodein.di.KodeinAware

See original GitHub issue

I get the following error when the app starts, I’ve tried to trace it but to no avail

2020-02-17 12:22:18.289 16962-16962/ga.forntoh.bableschool E/AndroidRuntime: FATAL EXCEPTION: main
    Process: ga.forntoh.bableschool, PID: 16962
    java.lang.RuntimeException: Unable to start activity ComponentInfo{ga.forntoh.bableschool/ga.forntoh.bableschool.ui.category.CategoriesActivity}: java.lang.ClassCastException: android.app.Application cannot be cast to org.kodein.di.KodeinAware
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3114)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3257)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1948)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7050)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
     Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to org.kodein.di.KodeinAware
        at org.kodein.di.android.ClosestKt.kodein(closest.kt:25)
        at org.kodein.di.android.ClosestKt.access$kodein(closest.kt:1)
        at org.kodein.di.android.ContextKodeinPropertyDelegateProvider$provideDelegate$1.invoke(closest.kt:39)
        at org.kodein.di.android.ContextKodeinPropertyDelegateProvider$provideDelegate$1.invoke(closest.kt:38)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at ga.forntoh.bableschool.ui.base.BaseActivity.getKodein(Unknown Source:7)
        at org.kodein.di.KodeinAwareKt$Instance$1.invoke(KodeinAware.kt:176)
        at org.kodein.di.KodeinAwareKt$Instance$1.invoke(Unknown Source:4)
        at org.kodein.di.KodeinProperty$provideDelegate$1.invoke(properties.kt:42)
        at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
        at ga.forntoh.bableschool.ui.base.BaseActivity.getViewModelFactory(Unknown Source:7)
        at ga.forntoh.bableschool.ui.base.BaseActivity.onCreate(BaseActivity.kt:38)
        at ga.forntoh.bableschool.ui.category.CategoriesActivity.onCreate(CategoriesActivity.kt:34)
        at android.app.Activity.performCreate(Activity.java:7327)
        at android.app.Activity.performCreate(Activity.java:7318)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3094)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3257) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1948) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7050) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965) 

Gradle

implementation "org.kodein.di:kodein-di-generic-jvm:6.5.0"
implementation "org.kodein.di:kodein-di-framework-android-x:6.5.0"

Application

class App : MultiDexApplication(), KodeinAware {

    override val kodein by Kodein.lazy {
        import(androidXModule(this@App))
        ...

Manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="ga.forntoh.bableschool">

    ...

    <application
        android:name=".App"
        ...

Activity

open class BaseActivity : ScopedActivity(), KodeinAware {

    override val kodein by closestKodein()

    private val viewModelFactory: ProfileViewModelFactory by instance()

    ...

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        viewModel = ViewModelProvider(this, viewModelFactory).get(ProfileViewModel::class.java)

        ...

    }

    ...

Issue Analytics

  • State:closed
  • Created 4 years ago
  • Comments:8 (4 by maintainers)

github_iconTop GitHub Comments

1reaction
romainbslcommented, Feb 17, 2020

Maybe you could try to force the App class to be use as the application context. override val kodein by lazy { (applicationContext as App).kodein }

0reactions
forntohcommented, Feb 18, 2020

Did you have a MultiDexApplication since the beginning?

At a certain point, I changed to MultiDexApplication it kept working.

Read more comments on GitHub >

github_iconTop Results From Across the Web

android.app.Application cannot be cast to org.kodein.di ...
I get the following error when the app starts, I've tried to trace it but to no avail 2020-02-17 12:22:18.289 ...
Read more >
android.app.Application cannot be cast to android.app.Activity
Wherever you are passing it pass this or ActivityName.this instead. Since you are trying to cast the Context you pass (Application not Activity ......
Read more >
Troubleshooting: java.lang.ClassCastException: android.app ...
When running your dagger project you find the error java.lang.ClassCastException: android.app.Application cannot be cast to .
Read more >
ClassCastException: Application cannot be cast - Medium
Sometimes, when I add custom Application class into project Android Studio does'nt cast it: ClassCastException: android.app.
Read more >
Android app application cannot be cast to - Estate Cambodia
Java.lang.classcastexception android.app.contextimpl cannot be cast to ... Android.app.application cannot be cast to org.kodein.di.kodein aware.
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found