Wie behebe ich die Fehlermeldung: „Vererbung von einer Schnittstelle mit ‚@JvmDefault‘-Mitgliedern ist nur mit der Option -Xjvm-default zulässig“
Lesezeit: 4 Minuten
FuManchuObey
Ich bin neu in der Android-Entwicklung und baue gerade meine erste echte App. Ich versuche, eine MVVM-Architektur zu implementieren. Aus diesem Grund habe ich für jedes Fragment ein ViewModel und jedes ViewModel verfügt über eine ViewModelFactory. So habe ich es zumindest verstanden.
Ich verwende den Standardcode, den anscheinend jeder für die Fabrik verwendet:
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")
}
}
Das Problem ist nun, dass der Compiler mir den folgenden Fehler anzeigt:
e: C:\Users\ …\ExampleViewModel.kt: (64, 7): Die Vererbung von einer Schnittstelle mit „@JvmDefault“-Mitgliedern ist nur mit der Option -Xjvm-default zulässig
Und dieser Fehler wird von der viewModelFactory-Klasse erzeugt, die ich im viewModel implementiert habe. Ich kann wirklich nicht sagen, was das bedeutet, und ich kann nichts Hilfreiches oder auch nur im Zusammenhang mit meinem spezifischen Problem finden. Ich habe grundsätzlich einige grundlegende Tutorials zum Erstellen Ihrer ersten App befolgt, aber es stoßen immer wieder solche Fehler auf. In den meisten Fällen konnte ich das Problem selbst beheben, aber dieses Mal ist es anders.
Ich weiß, dass viele von Ihnen über viel Erfahrung und Wissen verfügen, daher hoffe ich, dass einige von Ihnen die Zeit finden, mir zu helfen und mir einen Hinweis zu geben, was ich tun kann, um das Problem zu beheben.
ianhanniballake
Es scheint, als wären Sie entweder direkt oder indirekt (über eine andere Bibliothek) davon abhängig Lebenszyklus 2.5.0-alpha01.
Beachten Sie, dass Sie unter bestimmten Umständen möglicherweise Folgendes verwenden möchten all-compatibility anstatt allerfahren Sie mehr darüber in Jebrains Blogpost.
Ab Kotlin 1.6.20 benötigen Sie touch build.gradle nicht mehr. Weitere Informationen finden Sie unter KT-47000
Wenn du benutzt KotlinComplie und habe einen Fehler erhalten, den Sie verwenden können org.jetbrains.kotlin.gradle.tasks.KotlinCompile
– Chirag Savsani
7. Februar 2022 um 11:42 Uhr
In welchem Build.gradle soll ich das hinzufügen?
Sollte eine dieser Aussagen am Ende von hinzugefügt werden? build.gradle oder gibt es einen bestimmten Abschnitt der Datei, z android oder dependencies dass es darin platziert werden sollte? Beim Hinzufügen des Codes und Synchronisieren erhalte ich eine Fehlermeldung: org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method withType() for arguments
– John Harrington
16. März 2022 um 17:33 Uhr
Verwenden Sie die stabile Version, in diesem Fall 2.4.1. Ich habe das gleiche Problem und habe es durch diese Änderung gelöst.
Wenn Sie den Spaß überschreiben, erstellen Sie ihn ViewModelProvider.Factory Vermeiden Sie das Fragezeichen nach vieModel
Falsch:
<T : ViewModel?>
Richtig:
< T : ViewModel>
Scheint, als ob es einige Änderungen in der Klasse gegeben hätte.
14514600cookie-checkWie behebe ich die Fehlermeldung: „Vererbung von einer Schnittstelle mit ‚@JvmDefault‘-Mitgliedern ist nur mit der Option -Xjvm-default zulässig“yes