无效覆盖,应用程序因 AbstractMethodError 崩溃

问题描述 投票:0回答:1

我正在为我的应用程序开发类似导航框架之类的东西,现在是一个简单的任务,使超类中的某些容器被其子级覆盖,但是当我向方法并因 AbstractMethodError 崩溃,这看起来不可能。

That works as it has to work, methods are overridden

But in this case the abstract class where the function tries to invoke the abstract method and fails, if I change it to open it will work like it is not overridden even if it overridden

FATAL EXCEPTION: main
                                                                                                    Process: com.rus_artur4ik.veterinarian, PID: 21406
                                                                                                    java.lang.AbstractMethodError: abstract method "void com.rus_artur4ik.petcore.mvvm.lce.LceScreen.SomeFun(com.rus_artur4ik.petcore.mvvm.lce.LceViewModel, kotlin.jvm.functions.Function2, androidx.compose.runtime.Composer, int)"
    at com.rus_artur4ik.petcore.mvvm.lce.LceScreen.Content(LceScreen.kt:15)
    at com.rus_artur4ik.petcore.mvvm.lce.LceScreen.Content(LceScreen.kt:9)
    at com.rus_artur4ik.petcore.mvvm.MvvmScreen.Content(MvvmScreen.kt:17)
    at com.rus_artur4ik.petcore.navigation.Navigator$registerScreen$1.invoke(Navigator.kt:98)
    at com.rus_artur4ik.petcore.navigation.Navigator$registerScreen$1.invoke(Navigator.kt:98)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:116)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
    at androidx.navigation.compose.NavHostKt$NavHost$4$2.invoke(NavHost.kt:173)
    at androidx.navigation.compose.NavHostKt$NavHost$4$2.invoke(NavHost.kt:172)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
    at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
    at androidx.compose.runtime.saveable.SaveableStateHolderImpl.SaveableStateProvider(SaveableStateHolder.kt:84)
    at androidx.navigation.compose.NavBackStackEntryProviderKt.SaveableStateProvider(NavBackStackEntryProvider.kt:65)
    at androidx.navigation.compose.NavBackStackEntryProviderKt.access$SaveableStateProvider(NavBackStackEntryProvider.kt:1)
    at androidx.navigation.compose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:52)
    at androidx.navigation.compose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:51)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
    at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228)
    at androidx.navigation.compose.NavBackStackEntryProviderKt.LocalOwnersProvider(NavBackStackEntryProvider.kt:47)
    at androidx.navigation.compose.NavHostKt$NavHost$4.invoke(NavHost.kt:172)
    at androidx.navigation.compose.NavHostKt$NavHost$4.invoke(NavHost.kt:146)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:116)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
    at androidx.compose.animation.CrossfadeKt$Crossfade$5$1.invoke(Crossfade.kt:133)
    at androidx.compose.animation.CrossfadeKt$Crossfade$5$1.invoke(Crossfade.kt:128)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107)
    at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34)
    at androidx.compose.animation.CrossfadeKt.Crossfade(Crossfade.kt:142)
    at androidx.compose.animation.CrossfadeKt.Crossfade(Crossfade.kt:73)
    at androidx.navigation.compose.NavHostKt.NavHost(NavHost.kt:146)
    at androidx.navigation.compose.NavHostKt$NavHost$5.invoke(Unknown Source:13)
    at androidx.navigation.compose.NavHostKt$NavHost$5.invoke(Unknown Source:10)
    at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:162)
    at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(Composer.kt:2443)
    at androidx.compose.runtime.ComposerImpl.skipCurrentGroup(Composer.kt:2711)
    at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:3342)
    at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:3320)
    at androidx.compose.runtime.SnapshotStateKt__DerivedStateKt.observeDerivedStateRecalculations(DerivedState.kt:341)
    at androidx.compose.runtime.SnapshotStateKt.observeDerivedStateRecalculations(Unknown Source:1)
2023-05-05 21:36:11.128 21406-21406 AndroidRuntime          com.rus_artur4ik.veterinarian        E      at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:3320)
    at androidx.compose.runtime.ComposerImpl.recompose$runtime_release(Composer.kt:3285)
    at androidx.compose.runtime.CompositionImpl.recompose(Composition.kt:772)
    at androidx.compose.runtime.Recomposer.performRecompose(Recomposer.kt:1047)
    at androidx.compose.runtime.Recomposer.access$performRecompose(Recomposer.kt:124)
    at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:541)
    at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$2.invoke(Recomposer.kt:510)
    at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:34)
    at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:109)
    at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt:41)
    at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1317)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1328)
    at android.view.Choreographer.doCallbacks(Choreographer.java:940)
    at android.view.Choreographer.doFrame(Choreographer.java:869)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1302)
    at android.os.Handler.handleCallback(Handler.java:958)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loopOnce(Looper.java:205)
    at android.os.Looper.loop(Looper.java:294)
    at android.app.ActivityThread.main(ActivityThread.java:8180)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:946)
                                                                                                        Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [androidx.compose.runtime.PausableMonotonicFrameClock@65cda6b, androidx.compose.ui.platform.MotionDurationScaleImpl@9d7c9c8, StandaloneCoroutine{Cancelling}@90c0a61, AndroidUiDispatcher@d502986]

这是我的课:

abstract class LceScreen<S, VM: LceViewModel<S>>(
    viewModelClass: Class<VM>
): MvvmScreen<LceState<S>, VM>(viewModelClass) {

    @Composable
    final override fun Content(viewModel: VM) {
        SomeFun(vm = viewModel) {
            when (val state = viewModel.state) {
                is Loading -> Loading(
                    viewModel = viewModel
                )

                is Content -> Content(
                    content = state.content,
                    viewModel = viewModel
                )

                is Error -> Error(
                    throwable = state.throwable,
                    viewModel = viewModel
                )
            }
        }
    }

    @Composable
    protected abstract fun SomeFun(vm: VM, content: @Composable () -> Unit)

    @Composable
    protected abstract fun Loading(
        viewModel: VM
    )

    @Composable
    protected abstract fun Content(
        content: S,
        viewModel: VM
    )

    @Composable
    protected abstract fun Error(
        throwable: Throwable,
        viewModel: VM
    )
}

AGP 8.1.0-beta01 KGP 1.8.0 有什么想法,可能有什么问题吗? 非常感谢!

我尝试清理、重建、删除 build 和 .gradle 文件夹、删除 /.gradle/cache 文件夹

android kotlin gradle android-gradle-plugin android-jetpack-compose
1个回答
0
投票

问题是因为无效的全局 gradle 缓存,当我清理它时,一切都变得有效。 要清理全局 gradle 缓存,请使用

rm -rf $HOME/.gradle/caches/
© www.soinside.com 2019 - 2024. All rights reserved.