You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JUnit 4.10与Log4j2 2.10时遭遇ParserConfigurationException异常求助

解决Log4j2 2.10与Oracle XML解析器的配置解析异常

这个ParserConfigurationException是Log4j2和Oracle自带XML解析器的兼容性冲突导致的——Log4j2在解析XML配置时会尝试禁用DTD处理,但Oracle的JXDocumentBuilderFactory不支持对应的XML特性,直接抛出了异常。下面是几个经过验证的解决办法:

  • 强制使用标准Xerces解析器
    给JVM添加启动参数,指定用Sun/Oracle的标准Xerces解析器替代Oracle的特定实现:

    -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
    -Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl
    

    标准解析器支持Log4j2需要的DTD禁用特性,配置后就能正常解析/scratch/log4j.xml了。

  • 移除Log4j2配置中的DTD声明
    检查你的log4j.xml文件,如果顶部有类似<!DOCTYPE log4j:configuration ...>的DTD引用,直接删掉这一行。Log4j2的XML配置不需要依赖DTD,它使用Schema进行校验,移除DTD后解析器不会触发DTD加载流程,自然避开这个冲突。

  • 升级Log4j2到兼容版本
    你当前使用的2.10版本比较老旧,后续的Log4j2版本(比如2.11及以上)对不同XML解析器的兼容性做了优化,已经修复了这类和Oracle解析器的冲突。建议升级到稳定的新版本(注意避开存在安全漏洞的版本,比如2.17.0之前的部分版本),升级后大概率能直接解决问题。

额外排查点:如果上述方案都没效果,检查你的项目类路径,确保没有同时存在多个XML解析器的Jar包(比如Oracle的xmlparserv2.jar和Xerces的Jar),类加载冲突也可能引发这类解析异常。

内容的提问来源于stack exchange,提问作者Vishnu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:13:53