java.lang.ClassCastException:org.apache.xerces.jaxp.DocumentBuilderFactoryImpl无法强制转换为javax.xml.parsers.DocumentBuilderFactory

我在我的项目中使用java1.6jboss5.1Spring maven 3.2.5 。我得到了

java.lang.ClassCastException:org.apache.xerces.jaxp.DocumentBuilderFactoryImpl无法强制转换为javax.xml.parsers.DocumentBuilderFactory

这是我的Pom.xml

  4.0.0 com.varun.batch myproject war 0.0.1-SNAPSHOT myproject Maven Webapp http://maven.apache.org    org.springframework spring-orm 3.2.13.RELEASE    org.springframework.batch spring-batch-core 3.0.1.RELEASE   org.springframework.batch spring-batch-infrastructure 3.0.1.RELEASE   org.apache.axis2 axis2 1.6.2   org.apache.xmlbeans xmlbeans 2.5.0   org.apache.axis2 axis2-transport-local 1.6.1   org.apache.axis2 axis2-transport-http 1.6.1   commons-codec commons-codec 1.6   org.apache.poi poi 3.9   org.hibernate.javax.persistence hibernate-jpa-2.0-api 1.0.0.Final   org.hibernate hibernate-validator 3.1.0.CR2   org.slf4j slf4j-api     org.hibernate hibernate-entitymanager 3.3.1.ga   commons-logging commons-logging     org.hibernate hibernate-core 3.3.0.CR2   org.hibernate hibernate-ehcache 3.3.0.CR2   jboss-logging org.jboss.logging   commons-logging commons-logging     c3p0 c3p0 0.9.1.1   antlr antlr 2.7.7   aopalliance aopalliance 1.0   javax.servlet javax.servlet-api 3.0.1   stax stax-api 1.0.1   org.apache.axis2 axis2-kernel 1.6.1   servlet-api javax.servlet     org.apache.ws.commons.axiom axiom-api 1.2.12   commons-logging commons-logging     org.apache.geronimo.specs geronimo-activation_1.1_spec 1.0.2   org.apache.geronimo.specs geronimo-javamail_1.4_spec 1.6   jaxen jaxen 1.1.1   xercesImpl xerces   xml-apis xml-apis   xmlParserAPIs xerces     org.apache.geronimo.specs geronimo-stax-api_1.0_spec 1.0.1   org.apache.geronimo.specs geronimo-ws-metadata_2.0_spec 1.1.2   org.apache.ws.commons.axiom axiom-impl 1.2.12   commons-logging commons-logging     org.codehaus.woodstox wstx-asl 3.2.9   org.apache.geronimo.specs geronimo-jta_1.1_spec 1.1   commons-httpclient commons-httpclient 3.1   commons-logging commons-logging     wsdl4j wsdl4j 1.6.2   org.apache.ws.commons.schema XmlSchema 1.4.7   org.apache.httpcomponents httpcore 4.0   com.javaetmoi.core javaetmoi-spring4-vfs2-support 1.4.0   org.springframework spring-core 3.2.13.RELEASE   commons-logging commons-logging     org.springframework spring-aop 3.2.13.RELEASE   org.springframework spring-tx 3.2.13.RELEASE   org.springframework spring-expression 3.2.13.RELEASE   org.springframework.retry spring-retry 1.0.3.RELEASE   javax.persistence persistence-api 1.0   com.oracle ojdbc5 11.2.0.1 provided   org.slf4j slf4j-api 1.7.11   org.slf4j slf4j-simple 1.6.4   log4j log4j 1.2.17   commons-logging commons-logging 1.1.3   logkit logkit 1.0.1   org.apache.logging.log4j log4j-api 2.0   org.slf4j log4j-over-slf4j 1.7.11   org.springframework spring-jdbc 3.2.13.RELEASE   com.thoughtworks.xstream xstream 1.4.7   org.javassist javassist 3.18.1-GA   javax.batch javax.batch-api 1.0   org.springframework spring-beans 3.2.13.RELEASE   org.springframework spring-context 3.2.13.RELEASE   aopalliance aopalliance 1.0   javax.ws.rs jsr311-api 1.0   org.jboss.logging jboss-logging 3.3.0.Final      org.apache.maven.plugins maven-compiler-plugin 3.1  1.6 1.6    org.apache.axis2 axis2-wsdl2code-maven-plugin 1.6.2    wsdl2code   true com.globalss.data.processor.service src/main/resources/wsdl/MonitoringService.wsdl xmlbeans sync true true true      org.apache.maven.plugins maven-dependency-plugin   copy-dependencies package  copy-dependencies   ${project.build.directory} false true        target/generated-sources/axis2/wsdl2code/resources   target/generated-sources/xmlbeans/resources   src/main/resources   src/main/java/com/globalss/dnb/monitor/model/ com/globalss/dnb/monitor/model/  *.hbm.xml      

我尝试了多种解决方案,但无法解决它。

第一种方法)在jboss-5.1.0.GA \ lib \ endorsed文件夹中我有这个jar (xercesImpl) 。 所以我删除了那个jar,并运行该项目。

现在我得到了这个例外

xception将上下文初始化事件发送到类的监听器实例org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanDefinitionStoreException:从类路径资源解析XML文档的意外exception[spring-batch-context.xml]; 嵌套exception是javax.xml.parsers.FactoryConfigurationError:无法找到javax.xml.parsers.DocumentBuilderFactory的提供程序

我尝试用pom.xml评论了bellow依赖项

  jaxen jaxen 1.1.1   xercesImpl xerces   xml-apis xml-apis   xmlParserAPIs xerces    

但我得到了同样的例外

org.springframework.beans.factory.BeanDefinitionStoreException:从类路径资源解析XML文档的意外exception[spring-batch-context.xml]; 嵌套exception是java.lang.ClassCastException:org.apache.xerces.jaxp.DocumentBuilderFactoryImpl无法转换为org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:413)中的javax.xml.parsers.DocumentBuilderFactory

3)方法我看到了一些关于同一问题的解决方案,解决方案说要添加波纹管依赖关系

  xerces xercesImpl 2.11.0  

在我的pom.xml中添加上述依赖项后,我得到了这个exception

org.jboss.xb.binding.JBossXBRuntimeException:无法在org.jboss.web.tomcat.service.deployers上的org.jboss.xb.binding.UnmarshallerFactory $ UnmarshallerFactoryImpl.newUnmarshaller(UnmarshallerFactory.java:100)创建新的SAX解析器.JBossContextConfig.processContextConfig(JBossContextConfig.java:549)org.apache.web.tomcat.service.deployers.JBossContextConfig.init(JBossContextConfig.java:536)org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java) :279)org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)org.apache.catalina.core.StandardContext.init(StandardContext.java:5436)org.apache.catalina.core。 StandardContext.start(StandardContext.java:4148)

4)方法我也尝试删除这个jar 在此处输入图像描述

这也适合我。

我对这个例外感到非常沮丧,但我无法解决这个问题,

这个链接真的很好,它解决了同样的问题,但我仍然无法解决这个问题,任何人都可以帮助我。 在Java / Maven中处理“Xerces hell”?

编辑

我找到了根本原因。 这是来自Jboss 5.1 Run-time快照

在此处输入图像描述

这是来自Maven dependency的快照 在此处输入图像描述

所以这两个jar子是冲突的。

所以我做了什么。 构建项目后,我从Myproject.war删除了(xml-api1.0.b2.jar)并在Jboos手动部署了项目,并且jboss不会抛出错误。

但是当我不从myproject.war删除(xml-api1.0.b2.jar)并在jboss中部署时,它会抛出相同的错误。

所以我必须从pom.xml删除依赖项。

for (xml-api1.0.b2.jar)我已经定义了波纹管依赖项

  jaxen jaxen 1.1.1   xercesImpl xerces   xml-apis xml-apis   xmlParserAPIs xerces    

但是当我从我的pom.xml评论这个依赖时,我仍然得到了Maven依赖中的jar,就像我在图像中看到的那样。

我真的没有从这里(xml-api1.0.b2.jar) 任何人都可以通过查看我的pom.xml让我。

xml-api1.0.b2.jar由:poi-3.9导入。 poi-3.9依赖于dom4j,而dom4j包含xml-api1.0.b2因此,你可以将poi升级到3.16,它将解决这个问题。