Java修改微信xxe漏洞,支付回調(diào)用官方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

出現(xiàn)這個錯誤,感覺頭大,花很長時間沒有搞定,后來,無意間需要項目更新bug,發(fā)現(xiàn)在linux上支付回調(diào)正常,那說明在Linux上支付可以了,今天開新項目,本地調(diào)試發(fā)現(xiàn)還是如上圖錯誤,想必須搞定,翻閱很多博客,總結(jié)后覺得是jar包沖突,然后回到報錯的類,如下圖


16行報錯


這是微信提供sdk中的一個類,

這是微信提供sdk中的一個類,


選中DocumentBuilderFactory這個類,然后Ctrl+t,彈出如上圖:

發(fā)現(xiàn)有兩個實現(xiàn)類,

第一個有其它博客提到的關鍵詞xerces

第二個是Java提供的,這個沒問題,那第一個實現(xiàn)類就是沖突的類,然后點擊一個實現(xiàn)類


xercesImpl-2.6.2.jar

沖突包找到了,解決辦法有兩種

第一種排除這個包,操作如下圖:


如上圖操作后,pom.xml會有所變化,如下圖:


排除這個包

按預期測試,問題解決

第二種去掉這個包的maven依賴,經(jīng)過第一種操作,也知道了到底什么依賴導致沖突了,直接刪除。

在說一個跟這個文章沒有直接關系的問題,按照第二種方法刪除依賴后,發(fā)現(xiàn)一個類AesCbcUtil(這個類是用來解密微信小程序用戶登錄解密encryptedData用的)引用上圖依賴中的Base64類,后來嘗試jdk的Base64也可以完成同樣的功能。


微信給解決方案,真的坑猿,不管啥項目都用支付寶多好啊,簡單高效,還不用連公網(wǎng),為了方便其他猿,寫這篇文章,希望能幫助其他猿

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容