这是 JRE 中的一个已知错误,将其报告为警告。在此处和此处查看错误报告
仅当您的类路径中有 xerces jar 时才会出现此问题,xerces 实现无法识别该属性并在org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.setProperty()上引发异常,从而导致警告日志(到系统.err) 来自com.sun.org.apache.xalan.internal.xsltc.compiler.Parser.parse()
简单(如果可能)的解决方案是从类路径中删除 xerces jar。
您的日志过滤器不起作用,因为错误从未发送到 slf4j。哪种建议解决问题的复杂方法 - 将System.err 重定向到 slf4j,然后在其上使用日志过滤器。
重现问题的示例代码(基于问题报告):
import java.io.IOException;
import java.net.URL;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamSource;
public class XercesTest {
public static void main(String[] args) throws IOException, TransformerConfigurationException {
TransformerFactory tf = TransformerFactory.newInstance();
URL xsl = MainClass.class.getResource("build.xsl");
StreamSource stylesheetSource = new StreamSource(
xsl.openStream(), xsl.toExternalForm());
tf.newTransformer(stylesheetSource);
}
}
构建.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<!-- TODO: Auto-generated template -->
</xsl:template>
</xsl:stylesheet>
和maven依赖:
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.11.0</version>
</dependency>