我通过maven运行测试(mvn测试)时,在本地计算机上遇到以下异常。
ch.qos.logback.core.joran.event.SaxEventRecorder@195ed659 - Parser configuration error occured
java.lang.ClassCastException: com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl cannot be cast to javax.xml.parsers.SAXParserFactory
在四处搜寻之后,我遇到了描述其背后主要问题的几页(不同类加载器中的几个SAXParserFactoryImpl)。
-> http://www.xinotes.org/notes/note/702/
我的问题是,如何确定哪个库也提供了SAXParserFactoryImpl,以便可以排除它。我正在使用Maven,IntelliJ和JDK 1.6.0_23。在命令行以及从IntelliJ运行测试时,都会出现此问题。
但是一个奇怪的问题是,在构建服务器上不会发生此问题。
更新1
刚弄清楚,当我在执行mvn清理后第一次运行mvn测试时,不会出现该错误。但是,一旦我再次运行mvn test(不进行清理,就会发生异常)(当我从IntelliJ运行它时)。
当我在cmd行上运行它时,几个mvn测试调用可以正常工作。
最佳答案
我发现了问题。它与试图加载SAXParserFactory的PowerMockito有关。我之所以没弄清楚的原因是因为stacktrace仅包含两次PowerMockito,并且在中间:-)
因此,如果您在IntelliJ中发现了此问题并且确实使用了PowerMockito,请使用以下注释对测试类进行注释:
@PowerMockIgnore(["javax.management.*", "javax.xml.parsers.*",
"com.sun.org.apache.xerces.internal.jaxp.*", "ch.qos.logback.*", "org.slf4j.*"])
这已经解决了我的问题。
关于java - javax.xml.parsers.SAXParserFactory ClassCastException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8179399/