Android项目运行时报错NoclassDefFoundError

导Android项目时碰到个头疼的NoclassDefFoundError。

项目导入之后是没有报错的,但是运行就报这个错误

java.lang.NoClassDefFoundError: android.support.v4.view.ViewConfigurationCompat

而去查看v4的包,ViewConfigurationCompat这个类确实是存在的。

在解决这个报错的过程中我尝试了各种办法,特此整理下来。

网上一搜,好多解决办法~~

大致归类为以下几种:

http://ydpzg.blog.163.com/blog/static/17152629420127111178154/

http://blog.csdn.net/huangrangg12/article/details/8131325

http://blog.csdn.net/lllkey/article/details/9019861

还有新建libs,删除libs各种各样的~

报错的原因呢,总结起来就是下面这个分析:

1、引用了不同版本的相同包,导致程序在运行时不知道用哪个。于是程序抽风了。。
2、项目依赖,两个项目存在不同版本的相同的包

结果,尝试了好多好多遍!都没用啊!!!浪费了我两天的时间。。

还发了个帖子,得到了几个大神的帮助,感谢感谢!但还是没有解决问题,明明在大神的电脑上都是OK的了啊!



最后。。。换了个android.support.v4的包。。比较低版本的。问题就解决了。

心塞。。

最后我猜大概是这样的:

之前是Android-19,所以那个高版本的v4包可以正常使用,换到Android-17的环境之后,无法仰望高版本的V4包了。


所以,以后再碰到类似的问题,摸清原理之后就不要再一遍遍做无用功的尝试了,不是你导包的问题啊,是环境问题啊,换个包,换个环境啦~~

转载请注明出处:地才的博客

这个错误表明在运行JUnit4.12测试时,程序试图加载`android.hardware.hdmi.HdmiControlManager`类,但是找不到该类,这通常是由于以下几个原因: 1. **环境依赖缺失**:如果您的测试环境缺少Android SDK或相关的硬件模块,可能会导致找不到此类。确保您已经在项目中包含了正确的Android版本,并且SDK工具包已经配置好。 2. **未正确导入库**:如果`HdmiControlManager`来自第三方库,确保已经将该库添加到了项目的build.gradle文件中的dependencies部分,并进行了正确同步。 3. **测试代码问题**:在测试类中,可能是错误地假设了`HdmiControlManager`是在非Android环境中可用的,或者尝试在非设备环境下运行了一个依赖于硬件功能的测试。 4. **模拟或静态导入**:对于系统服务类,比如`HdmiControlManager`,在单元测试中通常不会直接实例化,而是通过模拟(mocking)来进行测试。如果没有正确地创建模拟对象,可能会抛出此类错误。 解决这类问题的一般步骤包括: - 确认所有依赖项正确安装和配置 - 使用AndroidJUnitRunner替代普通的JUnitRunner来运行测试 - 使用Mockito等库来模拟`HdmiControlManager`,而不是尝试直接实例化 如果你正在使用Mockito,可以尝试这样构造模拟对象: ```java @Mock private HdmiControlManager mockHdmiControlManager = ...; // 或者通过Mockito.mock(HdmiControlManager.class) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值