2010-06-07 12 views
6

He comenzado un proyecto maven tratando de implementar el algoritmo MapReduce en java 1.5.0_14. He elegido la versión 0.20.2 API hadoop. En el pom.xml estoy usando tanto la siguiente dependencia:0.20.2 API versión hadoop con java 5

< dependencia>

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

</dependency>

Pero cuando estoy usando una importación a la org.apache. clases de Hadoop, me sale el siguiente error:

archivo de clase de mal: $ {} HOME_DIR \ Repository \ org \ apache \ hadoop \ hadoop-core \ 0.20.2 \ hadoop-core-0.20.2.jar (org /apache/hadoop/fs/Path.class) cl el archivo del asno tiene la versión incorrecta 50.0, debe ser 49.0.

¿Alguien sabe cómo puedo solucionar este problema.

Gracias.

Respuesta

2

Maven compila por defecto a la compatibilidad con JDK 1.4. Tienes que cambiar esto.

es necesario agregar esto a su 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> 

[Editar: gracias por señalar Sean Hadoop requiere JDK 6]

+0

La versión del archivo de clase 50 se asigna a Java 6, por lo que realmente necesita especificar el origen y el destino de "1.6". (Hadoop requiere Java 6.) –

1

me encontré con este mismo problema. Resultó que sbt se estaba ejecutando en Java 5, que es el predeterminado en mi Mac por una razón tonta pero válida. Una vez que cambié mi script sbt para comenzar explícitamente con Java6, todo funcionó bien.

0

Independientemente de la fuente de & configuraciones de destino de tu experto compilador-plugin (que sólo controla cómo su propio código fuente se compila) debe utilizar una JVM 1.6 para ejecutar código de Hadoop, ya que se compila que apuntan a "1.6" JVM.

Por lo tanto, solo instale un tiempo de ejecución 1.6 java y úselo para ejecutar su programa.

Cuestiones relacionadas