在解决微信支付XXE(XML外部实体注入漏洞)的时使用了setFeature()方法,出现了如下异常:

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

不同jar包的多xml解析器冲突

微信支付创建xml解析器的官方SDK源码

public static DocumentBuilder newDocumentBuilder() throws ParserConfigurationException {
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        documentBuilderFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
        documentBuilderFactory.setFeature("http://xml.org/sax/features/external-general-entities", false);
        documentBuilderFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
        documentBuilderFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
        documentBuilderFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
        documentBuilderFactory.setXIncludeAware(false);
        documentBuilderFactory.setExpandEntityReferences(false);
        return documentBuilderFactory.newDocumentBuilder();

解决方法:在使用DocumentBuilderFactory前加入这一行代码

System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
public static DocumentBuilder newDocumentBuilder() throws ParserConfigurationException {
        //解决java.lang.AbstractMethodError:javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V异常
        System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        documentBuilderFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
        documentBuilderFactory.setFeature("http://xml.org/sax/features/external-general-entities", false);
        documentBuilderFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
        documentBuilderFactory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
        documentBuilderFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
        documentBuilderFactory.setXIncludeAware(false);
        documentBuilderFactory.setExpandEntityReferences(false);
        return documentBuilderFactory.newDocumentBuilder();
                    1 问题在解决微信支付XXE(XML外部实体注入漏洞)的时使用了setFeature()方法,出现了如下异常:java.lang.AbstractMethodError:javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)2 原因不同jar包的多xml解析器冲突3 解决微信支付创建...
					
解决错误nested exception is java.lang.NoSuchMethodError:org.apache.poi.util.XMLHelper.newDocumentBuilder
javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V异常 原因:不同jar包的多xml解析器冲突 解决方法:添加下列代码 System.setProperty("javax.xml.parsers.DocumentBuilderFactory","com.sun.org.apache.xerc...
文章目录1. 现象2. 解决方案13. 解决方案2 1. 现象 CXF 在和xercesImpl.jar冲突的时候,抱错javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z); 2. 解决方案1 将xercesImpl.jar替换xercesImpl:2.9.1就可以了 maven集成坐标 <dependency> <groupId>xerces</groupId>
java.lang.AbstractMethodError: javax.xml.transform.TransformerFactory.setFeature(Ljava/lang/String;Z)V private static String transForm(String xml, InputStream xsltStream) { if(xml == null || "".equals(xml)) { return null; ByteA
2.检查您的代码是否使用了不正确的 API 版本。请确保您的代码与您所使用的 XML 解析器版本兼容。 3.检查您的代码是否使用了不正确的类加载器。请确保您的代码使用了正确的类加载器来加载您的 XML 解析器。 4.如果您使用了 JDK9 及以上版本,则需要在模块描述文件中添加以下依赖项: <module>java.xml</module> </uses> 希望这些解决方法能够帮助您解决问题。
解决According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by iqqqqqqqya: 解决Error: unable to verify the first certificate报错 程序员小小黑: 解决Cannot delete or update a parent row: a foreign key constraint fails的mysql报错 呼叫 steelo~Z: 我在插入的数据里面的外键有两个外键都改了一下,然后就报这个错了。