javax.xml.parsers.SAXParserFactory ClassCastException 异常

标签 java xml saxparser

当通过 maven (mvn test) 运行测试时,我在本地机器上遇到以下异常。

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 clean 后第一次运行 mvn test 时,错误没有出现。但是,一旦我再次运行 mvn test(没有清理,就会发生异常)(当我从 IntelliJ 运行它时)。

当我在 cmd 行上运行它时,几个 mvn 测试调用会起作用。

最佳答案

我发现了问题。它与试图加载 SAXParserFactory 的 PowerMockito 有关。我没有想出其中一个的原因是因为堆栈跟踪只包含两次 PowerMockito,而这个在中间 :-)

因此,如果您在 IntelliJ 中发现了这个问题并且确实使用了 PowerMockito,请使用以下注释对您的测试类进行注释:

@PowerMockIgnore(["javax.management.*", "javax.xml.parsers.*",
         "com.sun.org.apache.xerces.internal.jaxp.*", "ch.qos.logback.*", "org.slf4j.*"])

这解决了我的问题。

关于javax.xml.parsers.SAXParserFactory ClassCastException 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8179399/

相关文章:

Android:是否可以在可绘制选择器中使用字符串/枚举?

Java - SaxParser/DocumentBuilder "failing"获取正确的标签主体

java - 是否可以使用 SAX 解析器解析大小为 800 MB 的大型 xml 文件

java - 解析小于 6 位的纳秒

java - 如何在 eclipse 和 tomcat 中创建简单的(servlet)java ee 项目

java - 什么样的设计决策会支持 Scala 的 Actor 而不是 JMS?

java - 使用少量线程并发发送大量 HTTP 请求

xml - 包含在应用程序中的免费轻量级 XML 文本编辑器

java - 来自 Java EE 类(class)测试 : JPA mapping with annotations mixed with XML. 哪个优先级更高?

Java:如何使用 SAX 确定 XML 解析期间的深度级别