在本地机器上运行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测试时(如果没有干净,就会出现异常)(当我从IntelliJ运行它时)。
当我在cmd行上运行它时,会有几个mvn测试调用工作。
发布于 2011-12-21 05:01:32
我发现了问题。这与试图加载PowerMockito的SAXParserFactory有关。我之所以没有想出这一条,是因为堆栈只包含了两次PowerMockito,中间是:-)
因此,如果您在IntelliJ中发现了这个问题,并且确实使用了PowerMockito,那么使用以下注释对您的测试类进行注释:
@PowerMockIgnore(["javax.management.*", "javax.xml.parsers.*",
"com.sun.org.apache.xerces.internal.jaxp.*", "ch.qos.logback.*", "org.slf4j.*"])
这解决了我的问题。
发布于 2011-11-18 00:08:23
您的JDK可能有自己的SAXParserFactoryImpl。
检查像xercesImpl、xml/xml和sax这样的jars。
一台您的服务器,一台来自服务器的服务器可能会被使用。
您可以使用jarfinder:http://www.jarfinder.com/index.php/java/search/~SAXParserFactoryImpl~
发布于 2018-07-05 10:54:24
我今天也遇到了同样的错误。经过大量的挖掘,我发现这里或其他地方的解决方案是没有帮助的。
然而,在反复试验之后,我找到了一个决定性的解决方案,这与不适用于所有情况的公认答案不同。
的答案是,查看堆栈跟踪以找到任何ClassCast异常,然后将它们添加到\@PowerMockIgnore列表中。一直重复,直到问题解决为止。对我起了神奇的作用。
https://stackoverflow.com/questions/8179399
复制相似问题