java java.lang.NoClassDefFoundError
最近遇到了多次方法超過65535的問題特來記錄一下
導致NoClassDefFoundError這個錯誤總共有3個原因
1.Java環境變量的配置錯誤,把classpath的環境變量重新配置一遍。
2.加載第三方包的時候報錯,重新再建一個libs包,覆蓋一遍;
3.在5.0以下的機型全部報這個錯誤,5.0以上的全部正常執行,後來才發現原因:我在gradle中已經聲明瞭 multiDexEnabled
true
,當方法數超過65535時便會自動打出兩個Dex包命名爲 classes.dex
classes2.dex
,一些方法被打入了第二個dex包,即classes2.dex
中,導致了5.0以下機型無法運行應用報錯,如果想知道導致65535的原因可以查看這個
爲什麼會有65535問題。
具體解決方法是添加依賴:compile 'com.android.support:multidex:1.0.1' (支持5.0以下的),然後在項目的application中再添加一個方法:
- protected void attachBaseContext(Context context) {
- super.attachBaseContext(context);
- MultiDex.install(this);
- }