Saket
Saket

Reputation: 441

Provider for javax.xml.parsers.DocumentBuilderFactory cannot be found

I am not able to get past this problem. Browsed through many forums. Pls help:

org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is javax.xml.parsers.FactoryConfigurationError: Provider for javax.xml.parsers.DocumentBuilderFactory cannot be found.

I have included all the jar files in xerces bin. Following is my WEB-INF/lib structure:

Lib

Upvotes: 19

Views: 63682

Answers (4)

MMascarin
MMascarin

Reputation: 568

I also had this problem working with WebSphere Portal 8. I was recently using xalan 2.7.0 for accessing and parsing XML.

<dependency>
    <groupId>xalan</groupId>
    <artifactId>xalan</artifactId>
    <version>2.7.0</version>
    <exclusions>
        <exclusion>
            <groupId>xml-apis</groupId>
            <artifactId>xml-apis</artifactId>
        </exclusion>
    </exclusions>
</dependency>

After removing the xml-apis (like Leon Li did) it worked fine.

Upvotes: 4

LeOn - Han Li
LeOn - Han Li

Reputation: 10234

We have this problem also when upgrade spring and jpa/hibernate from 3 to 4. For us it is because hibernate-entitymanager 4.3.11 has a dependency on jdom which has a dependency on xml-apis which will conflict with the JRE’s rt.jar’s javax.xml stuff. We exclude it so that our spring xml config could be correctly parsed. To solve the problem, we can just exclude the xml-apis from the dependency tree.

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

Upvotes: 17

Saket
Saket

Reputation: 441

I could resolve the above problem entirely, by setting the order in which classloader should load the xerces jar files (WAR->EAR->Server). The following link is taken from Xerces site at Apache. It helps to resolve the above issue for Websphere Portal/WAS:

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

Upvotes: 1

Saket
Saket

Reputation: 441

I was able to find a solution (by browsing through some forums):

  1. Go to the location where your JRE is present. For example, since I am using Websphere Portal JRE, I went to this location:C:\Program Files\IBM5\WebSphere\AppServer\java\jre\lib

  2. Open the jaxb.properties file and modify the property javax.xml.parsers.DocumentBuilderFactory to suite your xml parser. In my case it is: javax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl

I have been promoted to the next problem :). I am getting a ClassCastException now. Following is the log:

Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.ClassCastException: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl

All help is welcome. Thank you

Upvotes: 0

Related Questions