首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >javax.xml.parsers.SAXParserFactory ClassCastException

javax.xml.parsers.SAXParserFactory ClassCastException
EN

Stack Overflow用户
提问于 2011-11-18 08:02:57
回答 3查看 21.1K关注 0票数 16

在本地机器上运行maven测试(mvn测试)时,会出现以下异常。

代码语言:javascript
代码运行次数:0
运行
复制
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测试时(如果没有干净,就会出现异常)(当我从IntelliJ运行它时)。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-21 13:01:32

我发现了问题。这与试图加载PowerMockito的SAXParserFactory有关。我之所以没有想出这一条,是因为堆栈只包含了两次PowerMockito,中间是:-)

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

代码语言:javascript
代码运行次数:0
运行
复制
@PowerMockIgnore(["javax.management.*", "javax.xml.parsers.*",
         "com.sun.org.apache.xerces.internal.jaxp.*", "ch.qos.logback.*", "org.slf4j.*"])

这解决了我的问题。

票数 43
EN

Stack Overflow用户

发布于 2011-11-18 08:08:23

您的JDK可能有自己的SAXParserFactoryImpl。

检查像xercesImpl、xml/xml和sax这样的jars。

一台您的服务器,一台来自服务器的服务器可能会被使用。

您可以使用jarfinder:http://www.jarfinder.com/index.php/java/search/~SAXParserFactoryImpl~

票数 1
EN

Stack Overflow用户

发布于 2018-07-05 18:54:24

我今天也遇到了同样的错误。经过大量的挖掘,我发现这里或其他地方的解决方案是没有帮助的。

然而,在反复试验之后,我找到了一个决定性的解决方案,这与不适用于所有情况的公认答案不同。

的答案是,查看堆栈跟踪以找到任何ClassCast异常,然后将它们添加到\@PowerMockIgnore列表中。一直重复,直到问题解决为止。对我起了神奇的作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8179399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档