복붙노트

[HADOOP] Apache Hadoop setXIncludeAware UnsupportedOperationException

HADOOP

Apache Hadoop setXIncludeAware UnsupportedOperationException

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 일 동안 해결책을 찾고 있었고, 여러 웹 사이트를 발견했다. (예 : Hadoop "파서 용 setXIncludeAware (true)를 설정하지 못했습니다"오류 및이를 해결하는 방법) xerces 및 xalan을 maven에 추가하라는 제안 의존성. 다른 웹 사이트도 있었는데, 꽤 반대였습니다. classpath에서 모든 xerces 참조를 제거했습니다. 그러나 제안 된 솔루션 중 비 작동합니다 : (

나는 또한 넣어려고 :

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

내 코드에. 하지만 그것은 도움이되지 않았다 : (

제가 말했던 것처럼 Apache Hadoop 1.21과 JDK 1.7.0-17을 사용하고 있습니다.

해결법

  1. ==============================

    1.제 경우에는 xerces-impl 2.4.0에 대한 Maven 구성 요소 종속성이 오래되었습니다 (시험 단계에서 사용 된 mockrunner 1.0.3으로 인해). 섹션에 추가 된 관리 종속성이 도움이되었습니다.

    제 경우에는 xerces-impl 2.4.0에 대한 Maven 구성 요소 종속성이 오래되었습니다 (시험 단계에서 사용 된 mockrunner 1.0.3으로 인해). 섹션에 추가 된 관리 종속성이 도움이되었습니다.

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

    Hadoop 버전은 2.3.0입니다. 비슷한 상황을 설명하는 또 다른 기사가 있습니다.

  2. ==============================

    2.시도해보십시오.     -Djavax.xml.parsers.DocumentBuilderFactory = com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl

    시도해보십시오.     -Djavax.xml.parsers.DocumentBuilderFactory = com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl

    명령 행 인수로. 이 속성을 충분히 일찌감치 설정하지 않았습니까?

  3. from https://stackoverflow.com/questions/19438682/apache-hadoop-setxincludeaware-unsupportedoperationexception by cc-by-sa and MIT license