복붙노트

[HADOOP] Java 8로 Hadoop 2.4.1을 빌드 할 수 없음

HADOOP

Java 8로 Hadoop 2.4.1을 빌드 할 수 없음

문제는 꽤 간단합니다. 다음 명령을 사용하여 Windows에서 Hadoop2.4.1을 컴파일하려고합니다.

mvn clean package -Pdist,native-win -DskipTests -Dtar

JAVA_HOME = C : \ Program Files \ Java \ jdk1.7.0_51에서는 제대로 작동합니다.

JAVA_HOME = C : \ Program Files \ Java \ jdk1.8.0_05를 사용하면 다음 오류가 발생하지 않습니다.

[INFO] Apache Hadoop Annotations ......................... FAILURE [4.086s]
---
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.8
.1:jar (module-javadocs) on project hadoop-annotations: MavenReportException: Er
ror while creating archive:
[ERROR] Exit code: 1 - C:\hadoop-src\hadoop-common-project\hadoop-annotations\sr
c\main\java\org\apache\hadoop\classification\InterfaceStability.java:27: error:
unexpected end tag: </ul>
[ERROR] * </ul>
[ERROR] ^
[ERROR]
[ERROR] Command line was: "C:\Program Files\Java\jdk1.8.0_05\jre\..\bin\javadoc.
exe" -J-Dhttp.proxySet=true -J-Dhttp.proxyHost=proxy -J-Dhttp.proxyPort=3128 @op
tions @packages
[ERROR]
[ERROR] Refer to the generated Javadoc files in 'C:\hadoop-src\hadoop-common-pro
ject\hadoop-annotations\target' dir.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit
ch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionE
xception
[ERROR]

앞에서 언급했듯이 JAVA_HOME 외에는 아무것도 변경하지 않았습니다. 오류 메시지는 오류가 프록시와 관련되어 있음을 나타내는 것 같지만 이유는 알 수 없습니다.

두 경우 모두

C:\hadoop-src>javac -version
javac 1.8.0_05

C:\hadoop-src>java -version
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)

당신은 무슨 일이 일어나고 있는지에 대한 단서가 있습니까?

해결법

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

    1.이것은 javadoc에 의해보고 된 오류입니다. Java 8의 javadoc 버전은 이전 버전보다 훨씬 엄격합니다. 끝 태그가 존재하지 않는 것을 포함하여 유효하지 않은 마크 업으로 간주되는 것을 발견하면 오류를 표시합니다.

    이것은 javadoc에 의해보고 된 오류입니다. Java 8의 javadoc 버전은 이전 버전보다 훨씬 엄격합니다. 끝 태그가 존재하지 않는 것을 포함하여 유효하지 않은 마크 업으로 간주되는 것을 발견하면 오류를 표시합니다.

    javadoc에서이 검사를 끄려면 -Xdoclint : none 플래그를 javadoc 명령 행에 추가하십시오. Maven 환경에서이 작업을 수행하는 방법에 대한 자세한 내용은이 항목의 Stephen Colebourne의 블로그 항목을 참조하십시오. 특히,

    <additionalparam>-Xdoclint:none</additionalparam>
    

    적절한 속성 또는 구성 파일에 저장합니다.

    그래도 몇 가지 이상한 일들이 일어나고 있습니다. 이 파일의 현재 (트렁크) 버전은 종료 태그가 올바른 위치에있는 것 같습니다. 이 파일의 기록은 이전에 누락 된 종료 태그가 최근에 추가되었지만 Hadoop 2.4에있는 것으로 나타났습니다. 이 파일 자체는 오류를 억제하지 않고 JDK 8u5 javadoc에 의해 성공적으로 처리됩니다.

    이미 존재하지 않는 종료 태그를 추가 한 어딘가에 패치가 적용 되었는가? 종료 태그가 원래 소스에 추가되었으므로 이제 중복되어 있습니까? 여분의 종료 태그가 있으면이 오류로 인해 javadoc이 실패합니다.

    최신 정보

    나는 잘못된 지점을보고 있었다. 이 파일의 2.4.1 버전에는 분명히 추가 종료 태그가 있습니다. 잘못된 패치에 대한 내 추측은 일종의 권리였습니다. 트렁크에있는 파일의 히스토리는 2012 년 6 월에 HADOOP-8059에 의해 javadoc 주석이 다시 추가되었음을 보여줍니다. 이 새로운 추가 내용은 종료 태그가 누락되었습니다. 2014 년 1 월 HADOOP-10320에서 누락 된 끝 태그를 추가했습니다. HADOOP-10320 용 패치는 2.4.1 분기로 이식되었지만 HADOOP-8059의 새로운 javadocs는 이식되지 않아 잘못된 형식의 마크 업이 발생했습니다.

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

    2.또는 스튜어트 제안 (나는 추가 매개 변수를 넣을 위치를 찾는 데 어려움을 겪었다) : javadoc 생성을 모두 건너 뛰려면 그냥 실행하십시오.

    또는 스튜어트 제안 (나는 추가 매개 변수를 넣을 위치를 찾는 데 어려움을 겪었다) : javadoc 생성을 모두 건너 뛰려면 그냥 실행하십시오.

    mvn clean package -Pdist,native-win -DskipTests -Dtar -Dmaven.javadoc.skip=true
    
  3. from https://stackoverflow.com/questions/24615547/cant-build-hadoop-2-4-1-with-java8 by cc-by-sa and MIT license