遇到java.lang.NoClassDefFoundError这个异常问题,是合作方导入我们提供的sdk库后编译运行时报出的,但在我们的demo项目跑是正常,查了相关代码也没发现什么问题。
java.lang.NoClassDefFoundError: com.talkfun.sdk.log.LogConfigLoader$1
at com.talkfun.sdk.log.LogConfigLoader.loadLogConfig(Unknown Source)
at com.talkfun.sdk.log.TalkFunLogger.init(Unknown Source)
at com.talkfun.sdk.a.a(Unknown Source)
at com.talkfun.sdk.n.a(Unknown Source)
at com.talkfun.sdk.n.<init>(Unknown Source)
at com.talkfun.sdk.HtSdk.init(Unknown Source)
网上搜了一圈,有很多报NoClassDefFoundError的帖,尝试了几种处理方法也还是解决不了。因为项目有配置multiDexEnabled true,也看到了当multiDexEnabled设置为true时报NoClassDefFoundError的处理方法(https://medium.com/@nhancv/android-deal-with-multidex-fix-java-lang-noclassdeffounderror-8daf4d2135af), 本以为这就是我要找的,然后根据文章的方法处理后依然错同样的错报。
后来想到之前升级了一些依赖库的版本,会不会是第三方依赖库版本不一致导致某些方法找不到,看了配置才知道的确是这个问题,sdk是rxjava2,合作方用到的是rxjava,造成rxjava2的一些类找不到。
坑爹的Android Studio,如果在编译时就报找不到某个类,就能少走很多弯路查到问题。