找不到javax.xml.parsers.DocumentBuilderFactory的提供程序

时间:2013-06-28 08:01:41

标签: java xml

我无法解决这个问题。浏览了很多论坛。请帮忙:

  

org.springframework.beans.factory.BeanDefinitionStoreException:   从ServletContext资源解析XML文档时出现意外异常   [/WEB-INF/applicationContext.xml的];嵌套异常是   javax.xml.parsers.FactoryConfigurationError:Provider的提供者   找不到javax.xml.parsers.DocumentBuilderFactory。

我已将所有jar文件包含在xerces bin中。 以下是我的WEB-INF / lib结构:

Lib

4 个答案:

答案 0 :(得分:11)

当我将spring和jpa / hibernate从3升级到4时,我们也有这个问题。对我们来说,这是因为hibernate-entitymanager 4.3.11依赖于jdom,它依赖于xml-apis,它会与JRE冲突rt.jar的javax.xml东西。我们将其排除,以便可以正确解析我们的spring xml配置。 要解决这个问题,我们可以从依赖树中排除xml-apis。

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <exclusions>
        <exclusion>
            <groupId>xml-apis</groupId>
            <artifactId>xml-apis</artifactId>
        </exclusion>
    </exclusions>
</dependency>

答案 1 :(得分:3)

我在使用WebSphere Portal 8时遇到了这个问题。我最近使用xalan 2.7.0来访问和解析XML。

?

删除xml-apis后(就像Leon Li一样)它工作正常。

答案 2 :(得分:0)

我能够找到解决方案(浏览一些论坛):

  1. 转到您的JRE所在的位置。 例如,因为我使用的是Websphere Portal JRE,所以我去了这个位置:C:\ Program Files \ IBM5 \ WebSphere \ AppServer \ java \ jre \ lib

  2. 打开jaxb.properties文件并修改属性 javax.xml.parsers.DocumentBuilderFactory 以适应您的xml解析器。在我的情况下它是: javax.xml.parsers.DocumentBuilderFactory中= org.apache.xerces.jaxp.DocumentBuilderFactoryImpl

  3. 我被提升到下一个问题:)。我现在得到一个ClassCastException。以下是日志:

    从ServletContext资源[/WEB-INF/applicationContext.xml]解析XML文档时出现意外异常;嵌套异常是java.lang.ClassCastException:org.apache.xerces.jaxp.DocumentBuilderFactoryImpl

    欢迎所有帮助。谢谢

答案 3 :(得分:0)

我可以通过设置类加载器加载xerces jar文件(WAR-&gt; EAR-&gt; Server)的顺序来完全解决上述问题。以下链接取自Apache的Xerces站点。它有助于解决Websphere Portal / WAS的上述问题:

http://www.ibm.com/developerworks/websphere/library/techarticles/0310_searle/searle.html