这是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); }}
build.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>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)