使用支付宝SDK报异常:java.lang.NoClassDefFoundError: Failed resolution of: Lcom/alipay/sdk/app/PayTask

项目需要对支付宝SDK进行升级,原来使用alipaySdk-20161129.jar,我把它升级到了alipaySdk-20180601.jar。

 

正常运行的时候抛出异常:

 

从异常堆栈很明显可以知道,是因为找不到PayTask这个类。what???这个类明明就存在呀,为什么会找不到呢??

 

后来经过各种排查,发现是因为项目使用了aspectjx这个库导致的,支付宝并没有提供相应的解决方案:

https://openclub.alipay.com/club/history/read/13357

所以只能从aspectjx寻找答案了。aspectjx里面有提到默认会处理所有的二进制代码文件和库,大致就是这样导致了查找不到支付宝的PayTask这个类。同时aspectjx也提及到了出现编译兼容性问题的解决方案,就是使用exclude命令过滤索要排查的某些文件。
 

在Issues也有人提到这个问题和解决方案:

https://github.com/HujiangTechnology/gradle_plugin_android_aspectjx/issues/124

所以最终的解决方案是在app工程的build.gradle中添加aspectjx的过滤规则。

aspectjx {
    exclude 'com.alipay'
}

在上述链接相关的解决方案中有人添加了如下规则:

aspectjx {
    exclude 'com/alipay'
}

经过测试并没有起作用,项目使用的是

classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.4'

只有com.alipay生效了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值