美文网首页Java 杂谈
Java修改微信xxe漏洞,支付回调用官方sdk报错,解决办法

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

作者: 迈小步 | 来源:发表于2018-10-29 19:34 被阅读8次

    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报错,解决办法

        本文链接:https://www.haomeiwen.com/subject/hpkitqtx.html