11

Apache Hadoop 1.21 を実行しようとしていますが、次の例外が発生します。

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日間解決策を探していましたが、いくつかのWebサイトを見つけました(このようなHadoopの「パーサーにsetXIncludeAware(true)を設定できませんでした」エラーとその解決方法)、mavenにxercesとxalanを追加することを提案しました依存関係。ほぼ反対のことを示唆する他の Web サイトもありました - クラスパスからすべての xerces 参照を削除してください。しかし、提案された解決策はどれも機能していません:(

私も入れようとしました:

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

私のコードに。しかし、それも役に立ちませんでした:(

私が言ったように、私はApache Hadoop 1.21とJDK 1.7.0-17を使用しています。

4

2 に答える 2

13

私の場合、Maven コンポーネントの依存関係は時代遅れでしたxerces-impl 2.4.0(mockrunner 1.0.3テスト段階で使用されたため)。<dependencyManagemen>セクションに追加された次の管理された依存関係が役立ちました。

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

Hadoop のバージョンは2.3.0. 同様の状況を説明する別の記事を次に示します。

于 2014-08-05T10:51:58.987 に答える