Java – Apache Hadoop setXIncludeAware UnsupportedOperationException

Apache Hadoop setXIncludeAware UnsupportedOperationException… here is a solution to the problem.

Apache Hadoop setXIncludeAware UnsupportedOperationException

I’m trying to get Apache Hadoop 1.21 running but I’m getting this exception :

Failed to set setXIncludeAware(true) for parser org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
org.apache.xerces.jaxp.DocumentBuilderFactoryImpl@2662e5cf:java.lang.UnsupportedOperationException

Full stack trace:

13/10/17 17:22:52 ERROR conf. Configuration: Failed to set setXIncludeAware(true) for parser org.apache.xerces.jaxp.DocumentBuilderFactoryImpl@2662e5cf:java.lang.UnsupportedOperationException:  setXIncludeAware is not supported on this JAXP implementation or earlier: class org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
java.lang.UnsupportedOperationException:  setXIncludeAware is not supported on this JAXP implementation or earlier: class org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
    at javax.xml.parsers.DocumentBuilderFactory.setXIncludeAware(DocumentBuilderFactory.java:589)
    at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:1131)
    at org.apache.hadoop.conf.Configuration.loadResources(Configuration.java:1107)
    at org.apache.hadoop.conf.Configuration.getProps(Configuration.java:1053)
    at org.apache.hadoop.conf.Configuration.get(Configuration.java:460)
    at org.apache.hadoop.fs.FileSystem.getDefaultUri(FileSystem.java:132)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:124)
    at main. JobExecutor.executeModelCreation(JobExecutor.java:223)
    at main. JobExecutor.main(JobExecutor.java:256)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:160)

I’ve been looking for a solution for almost 3 days and I’ve found several sites (like this: Hadoop “Failed to set setXIncludeAware(true) for parser” error and how to resolve it ), we recommend adding Xerces and Xalan to the Maven dependencies. There are other websites that suggest the opposite – remove all xerces references from the classpath. But none of the suggested solutions worked 🙁

I also tried :

System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl"); 

My code. But it didn’t help either 🙁

As I said, I’m using Apache Hadoop 1.21 and JDK 1.7.0-17.

Solution

In my case, it’s a dependency of the deprecated Maven component on xerces-impl 2.4.0. (Since mockrunner 1.0.3 was used during the testing phase). The following managed dependencies have been added to the <dependencyManagemen> section of the help.

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>xerces</groupId>
            <artifactId>xercesImpl</artifactId>
            <version>2.11.0</version>
        </dependency>
    </dependencies>
</dependencyManagement>

Hadoop version 2.3.0 . Here is another article describes a similar situation.

Related Problems and Solutions