2010-06-07 1 views
6

java 1.5.0_14에서 MapReduce 알고리즘을 구현하려고하는 maven 프로젝트를 시작했습니다. 0.20.2 API hadoop 버전을 선택했습니다. pom.xml 파일에서 난 따라서 다음과 같은 의존성을 사용하고 있습니다 :0.20.2 java 5와 API hadoop 버전

< 의존성>

< groupId>org.apache.hadoop< /groupId>  
< artifactId>hadoop-core< /artifactId>  
< version>0.20.2< /version> 

</의존성>

하지만이 org.apache에 가져 오기를 사용하고 있습니다. hadoop 클래스에서 다음 오류가 발생합니다.

나쁜 클래스 파일 : $ {HOME_DIR} \ repository \ org \ apache \ hadoop \ hadoop-core \ 0.20.2 \ hadoop-core-0.20.2.jar (org /apache/hadoop/fs/Path.class) cl 엉덩이 파일의 버전이 50.0이고 버전이 49.0이어야합니다.

누군가이 문제를 어떻게 해결할 수 있는지 알고 있습니까?

감사합니다.

답변

2

Maven은 기본적으로 JDK 1.4와 호환되도록 컴파일합니다. 이걸 바꿔야 해.

당신은 당신의 pom.xml이를 추가해야합니다

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.0.2</version> 
    <configuration> 
     <source>1.6</source> 
     <target>1.6</target> 
    </configuration> 
</plugin> 

:이 똑같은 문제로 실행

+0

클래스 파일 버전 50은 Java 6에 매핑되므로 실제로 "1.6"의 소스 및 대상을 지정해야합니다. (Hadoop에는 Java 6이 필요합니다.) –

1

[편집 하둡을 지적 당신에게 숀을 감사하는 것은 JDK 6이 필요합니다]. 밖으로 sbt 자체가 바보지만 유효한 이유에 대한 내 Mac에서 기본 자바 5 실행되고 있었다. 일단 자바 스크립트를 명시 적으로 시작하도록 sbt 스크립트를 변경하면 모든 것이 잘 동작합니다.

0

maven-compiler-plugin의 소스 & 대상 구성 (자신의 소스 코드 컴파일 방법 만 제어 함)에 관계없이 "1.6"JVM을 대상으로 컴파일되므로 Hadoop 코드를 실행하려면 1.6 JVM을 사용해야합니다.

그래서 1.6 자바 런타임을 설치하고이를 사용하여 프로그램을 실행하십시오.