java.lang.AbstractMethodError: javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V
报错如下图:
出现这个错误,感觉头大,花很长时间没有搞定,后来,无意间需要项目更新bug,发现在linux上支付回调正常,那说明在Linux上支付可以了,今天开新项目,本地调试发现还是如上图错误,想必须搞定,翻阅很多博客,总结后觉得是jar包冲突,然后回到报错的类,如下图
这是微信提供sdk中的一个类,
选中DocumentBuilderFactory这个类,然后Ctrl+t,弹出如上图:
发现有两个实现类,
第一个有其它博客提到的关键词xerces
第二个是Java提供的,这个没问题,那第一个实现类就是冲突的类,然后点击一个实现类
冲突包找到了,解决办法有两种
第一种排除这个包,操作如下图:
如上图操作后,pom.xml会有所变化,如下图:
按预期测试,问题解决
第二种去掉这个包的maven依赖,经过第一种操作,也知道了到底什么依赖导致冲突了,直接删除。
在说一个跟这个文章没有直接关系的问题,按照第二种方法删除依赖后,发现一个类AesCbcUtil(这个类是用来解密微信小程序用户登录解密encryptedData用的)引用上图依赖中的Base64类,后来尝试jdk的Base64也可以完成同样的功能。
微信给解决方案,真的坑猿,不管啥项目都用支付宝多好啊,简单高效,还不用连公网,为了方便其他猿,写这篇文章,希望能帮助其他猿