2 leotey leotey 于 2016.09.21 19:53 提问

jar包依赖 出现java.lang.NoClassDefFoundError异常

场景一:A.jar和B.jar两个文件(非原生),其中B.jar是依赖A.jar生成。B.jar生成后将其导入android工程内(不进行A.jar导入),操作B.jar中的私有接口正常运行,但操作A.jar实现接口时会报NoClassDefFoundError异常;A.jar同B.jar一并导入工程异常消失。

场景二:B.jar依赖apache HttpClient.jar包生成时,仅将B.jar导入工程时,调用HttpClient.jar内接口不会出现NoClassDefFoundError异常。

不知场景一、二的区别是什么?

2个回答

oSanYeCao1234567
oSanYeCao1234567   Ds   Rxr 2016.09.21 20:51

场景一中因为B依赖A,当导入B不导入A时,操作A的实现接口肯定是报错的,找不到类;

场景二中未出现异常的原因可能是项目中已经导入的jar包包含HttpClient.jar的内容(比如android.jar就包含HttpClient相关的内容),所以未出现异常

leotey
leotey android 6.0之前android.jar对org.apache.http相关接口进行支持,对场景二我使用的是android6.0进行编译,并部署在android6.0的手机上,调用接口运行正常。这又是为何??
大约一年之前 回复
ljheee
ljheee   Rxr 2016.09.22 10:45

场景一中因为B依赖A,当导入B不导入A时,操作A的实现接口肯定是报错的,找不到类,
场景二因为在android.support里面就支持了HttpClient,使用HttpClient也是android官方推荐的,已经包含了,所以不需要导jar。

leotey
leotey android 6.0之前android.jar对org.apache.http相关接口进行支持,对场景二我使用的是android6.0进行编译,并部署在android6.0的手机上,调用接口运行正常。这又是为何??
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片