使用支付宝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生效了。

发布了70 篇原创文章 · 获赞 16 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/qq282330332/article/details/93133680