Android studio "java.lang.NoClassDefFoundError: com/android/util/PropertiesMap"layout错误

本文介绍了解决Android Studio中layout文件预览显示错误及NoClassDefFoundError的问题,通过调整API级别来修复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 问题:在Android studio中,打开写好的layout 文件,但是,不能够正确显示出模拟器图形,并且,报错如下:

java.lang.NoClassDefFoundError: com/android/util/PropertiesMap
at com.android.layoutlib.bridge.android.BridgeContext.createStyleBasedTypedArray(BridgeContext.java:940)
at com.android.layoutlib.bridge.android.BridgeContext.obtainStyledAttributes(BridgeContext.java:638)
at android.content.res.Resources_Theme_Delegate.obtainStyledAttributes(Resources_Theme_Delegate.java:71)
at android.content.res.Resources$Theme.obtainStyledAttributes(Resources.java:1436)
at android.widget.TextView.<init>(TextView.java:761)
at android.widget.TextView.<init>(TextView.java:704)
at android.widget.TextView.<init>(TextView.java:700)
at com.android.layoutlib.bridge.MockView.<init>(MockView.java:50)
at com.android.layoutlib.bridge.MockView.<init>(MockView.java:45)
at com.android.layoutlib.bridge.MockView.<init>(MockView.java:41)
at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:163)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:858)
at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:70)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:834)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at com.android.layoutlib.bridge.bars.CustomBar.<init>(CustomBar.java:95)
at com.android.layoutlib.bridge.bars.StatusBar.<init>(StatusBar.java:67)
at com.android.layoutlib.bridge.impl.Layout.createStatusBar(Layout.java:223)
at com.android.layoutlib.bridge.impl.Layout.<init>(Layout.java:145)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:300)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:429)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:510)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:498)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:967)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:498)
at com.android.tools.idea.rendering.RenderTask.access$600(RenderTask.java:72)
at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:610)
at com.android.tools.idea.rendering.RenderTask$3.call(RenderTask.java:607)
at com.android.tools.idea.rendering.RenderService.runRenderAction(RenderService.java:359)
at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:607)
at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:629)
at com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$7.run(AndroidDesignerEditorPanel.java:519)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:337)
at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:327)
at com.intellij.util.ui.update.MergingUpdateQueue$3.run(MergingUpdateQueue.java:271)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:286)
at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:244)
at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:234)
at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
at com.intellij.util.Alarm$Request$1.run(Alarm.java:352)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

2.原因:

在对应的版本上,更新android 相关包不完整。


3.解决办法:

降低api版本,例如,在下图中,调整api level,比如,24调整为23.



### 解决 Java NoClassDefFoundError com.alibaba.csp.sentinel.util.SpiLoader 错误 当遇到 `java.lang.NoClassDefFoundError: com/alibaba/csp/sentinel/util/SpiLoader` 错误时,这通常意味着在运行时找不到指定的类文件。此类问题可能由多种原因引起,包括但不限于依赖冲突、版本不匹配或缺少必要的库。 #### 1. 检查 Sentinel Core 的版本兼容性 Sentinel-core 1.8.1 版本更改了 SpiLoader 类的位置至 `com.alibaba.csp.sentinel.spi` 路径下[^2]。因此如果项目中存在不同版本之间的混淆,则可能导致上述异常。建议确认当前使用的 sentinel-core 是否为最新稳定版,并调整 pom.xml 或 build.gradle 文件中的依赖声明来确保一致性: 对于 Maven 用户,在项目的 POM 文件内添加如下配置: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> <version>${latest.version}</version><!-- 使用最新的版本号 --> </dependency> ``` #### 2. 清理 IDE 缓存并重新导入项目 有时开发环境(如 IDEA)内部缓存可能会导致加载错误。尝试通过清理IDE缓存解决问题[^4]: - 打开设置 -> 构建工具 -> Gradle/Maven 设置; - 取消勾选自动导入选项; - 关闭再打开工程让其强制刷新外部库; - 如果仍然存在问题可以考虑删除 .idea 和 target 目录后再试一次; #### 3. 验证 Classpath 中是否存在所需 JAR 包 确保 classpath 下确实包含了含有该 SPI 接口实现的 jar 包。可以通过命令行查看已引入的所有第三方库列表: Linux/macOS 系统执行: ```bash jar tf your-application.jar | grep csp/sentinel/spi/ ``` Windows 平台则可利用 PowerShell 完成相同操作: ```powershell Get-JarEntryInfo.ps1 -JarFile "your-application.jar" -Pattern "\csp\sentry\spi" ``` 以上方法可以帮助定位缺失的具体模块位置以便及时补充相应资源到构建路径当中去。 #### 4. 启用远程调试排查更深层次的原因 如果经过前面几步处理之后依旧无法彻底消除此异常现象的话,那么启用 JVM 参数支持远程调试功能不失为一种有效的手段来进行进一步分析[^3]: 目标机器端开启服务监听等待连接请求: ```shell nohup java \ -Xdebug \ -Xrunjdwp:transport=dt_socket,address=*:5005,server=y,suspend=n \ -jar application.jar & ``` 随后借助于本地集成开发环境中提供的 Remote Debug 功能建立会话链接,从而能够更加直观地观察程序实际执行流程以及变量状态变化情况找出根本症结所在。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liranke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值