上周五项目测试时发现一个奇怪的Bug,项目中依赖了一个第三方框架,但是在android4.0-4.4.4之间的系统中运行会直接闪退,抛出错误异常为java.lang.NoClassDefFoundError。

第一次遇到这样的问题,google了好久找到了以下几个原因:

该异常表示找不到类定义,当JVM或者ClassLoader实例尝试装载该类的定义(这通常是一个方法调用或者new表达式创建一个实例过程的一部分)而这个类定义并没有找时所抛出的错误。

[解决方案]:NoClassDefFoundError异常一般出现在编译环境和运行环境不一致的情况下,就是说有可能在编译过后更改了Classpath或者jar包所以导致在运行的过程中JVM或者ClassLoader无法找到这个类的定义。

1.分dex包编程,如果依赖的dex包删除了指定的类,执行初始化方法时将会报错;

2.使用第三方SDK或插件化编程时,动态加载或实例化类失败将会报错;

3.系统资源紧张时,当大量class需要加载到内存的时候,处于竞争关系,部分calss竞争失败,导致加载不成功;

4.装载并初始化一个类时失败(比如静态块抛 java.lang.ExceptionInInitializerError 异常),然后再次引用此类也会提示NoClassDefFoundErr 错误;

5.手机系统版本或硬件设备不匹配(如ble设备只支持18以上SDK),程序引用的class在低版本中不存在,导致NoClassDefFoundErr 错误。

6.so文件找不到,设备平台armeabi-v7a,但是我的so库是放在armeabi中的,解决方法新建一个armeabi-v7a包,并且把armeabi的文件拷贝过来.

但是,在实际的定位问题的过程中发现并不是总的方法数超出65535,也并不是class竞争失败,最后的问题出在解决方案5,引用的class在低版本中不存在或者说实现可能不同了。

在这个第三方框架的webView里我调用了

webView1.png

但是发现它的最终实现是

webView2.png

我猜测找不到类应该是在4.4 -4.4.4运行过程中没有链接到View的实现,从而导致类加载失败,所以解决方案如下

webView3.png

安卓4.4玩java_Android4.4运行过程中闪退java.lang.NoClassDefFoundError相关推荐

  1. python 利用pyinstaller 编译.exe文件过程中编写完的.exe文件执行过程中闪退

    问题描述: python 利用pyinstaller 编译.exe文件过程中编写完的.exe文件执行过程中闪退,并提示no module named 'pyproj.datadir' 解决方法: 闪退 ...

  2. 安卓- apk安装出现闪退java.lang.RuntimeException: Unable to instantiate application

    Android Apk安装出现java.lang.RuntimeException: Unable to instantiate application## 08-08 14:50:12.445 29 ...

  3. oracle安装过程中闪退

    今天学习安装oracle的时候发生了安装程序闪退的情况,网上介绍的方法比如修改兼容模式,管理员运行等方法都没有用,最后发现解决办法是更改安装程序的目录路径. 需要把安装目录放在盘符根目录下,这样set ...

  4. 01-eclipse打包运行程序总是报错java.lang.NoClassDefFoundError和ava.lang.ClassNotFoundException(打包原理)

    1.概述 1.今天写了一个程序没有任何错误 2.但是运行的时候总是报错 3.很郁闷啊.有没有,难道是我打包错误了?下面看看我的打包 选择打包内容

  5. 操作系统中进程并发运行的过程_三种电磁流量计运行过程中常见故障解决详情!...

    原标题:三种电磁流量计运行过程中常见故障解决详情! 昨天给大家介绍了电磁流量计的一些典型故障,今天我们继续来谈电磁流量计的故障问题!电磁流量计在正常的保养与维护之后,在正常使用的过程中依旧是会因为当时 ...

  6. 程序运行过程中遇到“ORA-03114: not connected to ORACLE”的问题解决

    程序运行过程中遇到"ORA-03114: not connected to ORACLE"的问题解决 参考文章: (1)程序运行过程中遇到"ORA-03114: not ...

  7. python运行过程中会被编译成二进制_Python代码在运行过程中,会被编译成二进制代码。_学小易找答案...

    [单选题]1. ( )是违反设备安全操作规程的错误做法. [单选题]Thank you for your letter ___________ 24th March. (1.0分) [单选题]超外差接 ...

  8. Intel Realsense D435 当摄像头运行过程中突然USB线断开,对RuntimeError: Frame didn't arrived within 5000的异常捕获及处理

    如图,在摄像头运行过程中,摄像头突然断开,可能设备需要对异常进行捕获并处理(如摄像头重连,发出警报,发送信号给车辆让它停止前进等) 需阅读,python异常捕获及处理 191225 通过捕获所有异常, ...

  9. 小程序执行运行过程原理_活性污泥法基本原理、净化反应过程、工艺类型和运行过程中存在的问题...

    ↑ 点击上方"表面活性剂平台"关注我们 活性污泥法实质上是天然水体自净作用的人工强化,能从污水中去除溶解态和胶体态的可生物降解有机物以及能被活性污泥吸附的悬浮固体和其他物质,具有对 ...

最新文章

  1. docker中部署springboot项目,并且外部访问
  2. 前端H5怎么切换语言_H5前端和移动APP开发知识点和配套视频
  3. linux日志发送,Linux中将执行过的命令记录到日志并发送到服务器的方法
  4. 【编译原理】构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 8.)(笔记)一元运算符正负(+,-)
  5. 多进程Socket_Client
  6. 29岁学python的建议_学习Python的建议
  7. pytorch中查看可训练参数
  8. Android的HashMap方法,Android中实现HashMap排序的方法
  9. linux系统安全加固基础篇1
  10. Android 隐藏类的使用
  11. eclipse集群tomcat
  12. qpython3h_QPython3H安卓运行Python神器
  13. 简单的三点式腰背肌锻炼方法
  14. 使用zxing生成彩色或带图片的二维码
  15. 博弈DP:PIPI的炸弹
  16. 【致青春】奋斗迷茫的我们
  17. 6款超实用微信小程序,任何手机都需要!
  18. MySQL入门笔记(五):另存数据为文件(导出数据)
  19. CentOS 6.4安装配置ldap
  20. vue项目打包部署在windows或linux服务器上

热门文章

  1. QPW 企业维度评分表(tf_company_dimesion)
  2. Oracle数据库的trigger(触发器)
  3. php 数组是否属于迭代器,数组的迭代器属性Iterator介绍
  4. Mybatis结果集映射
  5. mysql驱动连接不了mariadb_无法从振动应用程序连接到MySQL / MariaDB数据库
  6. sku设计mysql_基于spring boot拥有完整sku和下单流程的完全商城
  7. 安卓系统dicom阅读器_用户分享:电子书阅读器Note Pro,一座贴心的移动图书馆...
  8. 影响个人计算机系统功能的因素,影响个人计算机系统功能的因素除了系统使用哪种位的微处理器外,还有CPU的时钟频率、CPU主内存容量、CPU所能提供的指令集。...
  9. python3字符串截取_从python3中的字符串中获取特定文本
  10. xrd精修教程_XRD精修系列干货 | 带你领略晶体之美