Java修改微信xxe漏洞,支付回调用官方sdk报错,解决办法

java.lang.AbstractMethodError: javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V

报错如下图:


java.lang.AbstractMethodError: javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V

出现这个错误,感觉头大,花很长时间没有搞定,后来,无意间需要项目更新bug,发现在linux上支付回调正常,那说明在Linux上支付可以了,今天开新项目,本地调试发现还是如上图错误,想必须搞定,翻阅很多博客,总结后觉得是jar包冲突,然后回到报错的类,如下图


16行报错


这是微信提供sdk中的一个类,

这是微信提供sdk中的一个类,


选中DocumentBuilderFactory这个类,然后Ctrl+t,弹出如上图:

发现有两个实现类,

第一个有其它博客提到的关键词xerces

第二个是Java提供的,这个没问题,那第一个实现类就是冲突的类,然后点击一个实现类


xercesImpl-2.6.2.jar

冲突包找到了,解决办法有两种

第一种排除这个包,操作如下图:


如上图操作后,pom.xml会有所变化,如下图:


排除这个包

按预期测试,问题解决

第二种去掉这个包的maven依赖,经过第一种操作,也知道了到底什么依赖导致冲突了,直接删除。

在说一个跟这个文章没有直接关系的问题,按照第二种方法删除依赖后,发现一个类AesCbcUtil(这个类是用来解密微信小程序用户登录解密encryptedData用的)引用上图依赖中的Base64类,后来尝试jdk的Base64也可以完成同样的功能。


微信给解决方案,真的坑猿,不管啥项目都用支付宝多好啊,简单高效,还不用连公网,为了方便其他猿,写这篇文章,希望能帮助其他猿

你可能感兴趣的:(Java修改微信xxe漏洞,支付回调用官方sdk报错,解决办法)