日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發(fā)布時間:2023/12/2 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓4.4玩java_Android4.4运行过程中闪退java.lang.NoClassDefFoundError 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

上周五項目測試時發(fā)現(xiàn)一個奇怪的Bug,項目中依賴了一個第三方框架,但是在android4.0-4.4.4之間的系統(tǒng)中運行會直接閃退,拋出錯誤異常為java.lang.NoClassDefFoundError。

第一次遇到這樣的問題,google了好久找到了以下幾個原因:

該異常表示找不到類定義,當JVM或者ClassLoader實例嘗試裝載該類的定義(這通常是一個方法調(diào)用或者new表達式創(chuàng)建一個實例過程的一部分)而這個類定義并沒有找時所拋出的錯誤。

[解決方案]:NoClassDefFoundError異常一般出現(xiàn)在編譯環(huán)境和運行環(huán)境不一致的情況下,就是說有可能在編譯過后更改了Classpath或者jar包所以導(dǎo)致在運行的過程中JVM或者ClassLoader無法找到這個類的定義。

1.分dex包編程,如果依賴的dex包刪除了指定的類,執(zhí)行初始化方法時將會報錯;

2.使用第三方SDK或插件化編程時,動態(tài)加載或?qū)嵗愂箦e;

3.系統(tǒng)資源緊張時,當大量class需要加載到內(nèi)存的時候,處于競爭關(guān)系,部分calss競爭失敗,導(dǎo)致加載不成功;

4.裝載并初始化一個類時失敗(比如靜態(tài)塊拋 java.lang.ExceptionInInitializerError 異常),然后再次引用此類也會提示NoClassDefFoundErr 錯誤;

5.手機系統(tǒng)版本或硬件設(shè)備不匹配(如ble設(shè)備只支持18以上SDK),程序引用的class在低版本中不存在,導(dǎo)致NoClassDefFoundErr 錯誤。

6.so文件找不到,設(shè)備平臺armeabi-v7a,但是我的so庫是放在armeabi中的,解決方法新建一個armeabi-v7a包,并且把armeabi的文件拷貝過來.

但是,在實際的定位問題的過程中發(fā)現(xiàn)并不是總的方法數(shù)超出65535,也并不是class競爭失敗,最后的問題出在解決方案5,引用的class在低版本中不存在或者說實現(xiàn)可能不同了。

在這個第三方框架的webView里我調(diào)用了

webView1.png

但是發(fā)現(xiàn)它的最終實現(xiàn)是

webView2.png

我猜測找不到類應(yīng)該是在4.4 -4.4.4運行過程中沒有鏈接到View的實現(xiàn),從而導(dǎo)致類加載失敗,所以解決方案如下

webView3.png

總結(jié)

以上是生活随笔為你收集整理的安卓4.4玩java_Android4.4运行过程中闪退java.lang.NoClassDefFoundError的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。