我通过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/

10-10 03:48