Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Error Message I cant resolve: "Inheritance from an interface with '@JvmDefault' members is only allowed with -Xjvm-default option"

I’m new to android development and I’m currently building
my first real app. I’m trying to implement a MVVM architecture
and because of that I’m having a viewModel for each fragment and
each viewModel has a viewModelFactory. At least this is how I
understood it has to be.

I use the boilerplate code everyone seems to use for the factory:

    class ExampleViewModelFactory(private val exampleDao: ExampleDao) : ViewModelProvider.Factory {
    override fun <T : ViewModel> create(modelClass: Class<T>): T {
        if (modelClass.isAssignableFrom(exampleViewModel::class.java)) {
            @Suppress("UNCHECKED_CAST")
            return ExampleViewModel(exampleDao) as T
        }
        throw IllegalArgumentException("Unknown ViewModel class")
    }
}

Now the Problem is, that the Compiler is giving me the following error:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

e: C:\Users\ …\ExampleViewModel.kt: (64, 7): Inheritance from an interface with ‘@JvmDefault’ members is only allowed with -Xjvm-default option

And this error is produced by the viewModelFactory class I have implemented in the viewModel.
I realy can’t tell what this means and I cant find anything helpfull or even
related to my specific problem. I basically followed some basic tutorials
about creating your first app but I keep on running into errors like this.
In most cases I was able to fix the problem by myself but this time its different.

I know that a lot of you have a lot of experience and knowledge, so I hope
that some of you find the time to help me and give me a hint what I can do
to fix this.

If you need anymore information about my project feel free to ask and I’ll
provide it right away.

Thanks in advance and best regards

>Solution :

It seems like you are either directly or indirectly (through some other library) depending on Lifecycle 2.5.0-alpha01.

As per this issue:

You need to temporarily add following to your build.gradle:

tasks.withType(KotlinCompile).configureEach {
    kotlinOptions {
        freeCompilerArgs += [
                "-Xjvm-default=all",
        ]
    }
}

Note that in certain circumstances you may want to use all-compatibility instead of all, learn more about that in Jebrain’s blogpost.

Starting with kotlin 1.6.20 you won’t need touch build.gradle for more information see KT-47000

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading