Apache Hadoop setXIncludeAware UnsupportedOperationException

我正在尝试运行Apache Hadoop 1.21,但我遇到了这个exception:

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

完整堆栈跟踪:

 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) 

我已经找了近3天的解决方案,我找到了几个网站(比如这个: Hadoop“无法为解析器设置setXIncludeAware(true)”错误以及如何解决它 ),这建议将xerces和xalan添加到maven依赖。 还有其他网站,建议几乎相反 – 从类路径中删除所有xerces引用。 但非建议的解决方案是工作:(

我也尝试过:

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

到我的代码。 但它也没有帮助:(

我正在使用Apache Hadoop 1.21和JDK 1.7.0-17。

在我的情况下,它是过时的Maven组件依赖于xerces-impl 2.4.0 (由于在测试阶段使用了mockrunner 1.0.3 )。 以下管理的依赖项添加到部分帮助。

    xerces xercesImpl 2.11.0    

Hadoop版本是2.3.0 。 这是另一篇描述类似情况的文章 。

尝试传递-Djavax.xml.parsers.DocumentBuilderFactory = com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl

作为一个命令灵魂arg。 也许你没有尽早设置房产?