使用 JRE 文件夹中的属性文件 "lib/jaxp.properties"。此配置文件格式为标准的 java.util.Properties 且包含实现类的完全限定名,其中实现类的键是上述定义的系统属性。 JAXP 实现只读取一次 jaxp.properties 文件,然后缓存其值供以后使用。如果首次尝试读取文件时,文件不存在,则不会再次尝试检查该文件是否存在。首次读取 jaxp.properties 后,其中的属性值不能再更改;
文件内容如下:
使用 Services API(在 JAR 规范中进行了详细描述)来确定类名称。Services API 将查找在运行时可用的 jar 中 META-INF/services/javax.xml.parsers.DocumentBuilderFactory 文件中的类名;
文件内容如下:
2. 引起问题的原因
项目引入了xercesImpl,在该jar中有Services API的定义,导致DocumentBuilderFactory初始化为org.apache.xerces.jaxp.DocumentBuilderFactoryImpl,而在这个实现类中没有setFeature方法
3. 尝试解决方法
项目中去除xercesImpl依赖
验证结果:无法解决
问题原因:好多地方有对xercesImpl的依赖,项目中去除对该JAR的直接依赖解决不了问题,如果完全去除会对其它功能有影响;