Jetpack Compose预览渲染异常:ClassNotFoundException问题求助
ClassNotFoundException: androidx.activity.compose.LocalOnBackPressedDispatcherOwner 问题场景
展示Jetpack Compose组件预览时出现渲染问题,截图如下:
点击错误图标后,报错信息如下:
java.lang.ClassNotFoundException: androidx.activity.compose.LocalOnBackPressedDispatcherOwner
at java.lang.ClassLoader.loadClass(ClassLoader.java:589)
at java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at androidx.compose.ui.tooling.ComposeViewAdapter.WrapPreview ... (ComposeViewAdapter.kt:528)
at androidx.compose.ui.tooling.ComposeViewAdapter.access$WrapPreview(ComposeViewAdapter.kt:124)
at androidx.compose.ui.tooling.ComposeViewAdapter$init$3.invoke(ComposeViewAdapter.kt:583)
at androidx.compose.ui.tooling.ComposeViewAdapter$init$3.invoke(ComposeViewAdapter.kt:580)
使用的Composable代码:
@Composable @Preview fun TestCompose(){ Column { Text(text = "something") } }
解决方案
这个异常是因为Compose预览工具依赖的activity-compose库缺失或版本不匹配导致的,按以下步骤修复:
- 确保Module级别的
build.gradle文件中添加了activity-compose依赖,版本需与项目中其他Compose库保持一致:implementation "androidx.activity:activity-compose:1.7.2" // 版本号请适配你的Compose版本 - 点击Android Studio右上角的Sync按钮,同步Gradle项目
- 执行清理并重建项目:依次点击
Build -> Clean Project,再点击Build -> Rebuild Project - 若问题仍存在,检查所有Compose相关依赖(如
compose-ui、compose-material等)的版本是否统一,建议使用官方推荐的版本组合。
内容的提问来源于stack exchange,提问作者sadat

