Estoy tratando de ejecutar el conteo de palabras ejemplo en hadoop – 1.0.4 y recibo el siguiente error:

Exception in thread "main" java.lang.UnsupportedClassVersionError: WordCount :
Unsupported major.minor version 52.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:149)

Yo uso la siguiente versión de java:

java version "1.7.0_11"
Java(TM) SE Runtime Environment (build 1.7.0_11-b21)
Java HotSpot(TM) Server VM (build 23.6-b04, mixed mode)

También JAVA_HOME indica a la java7 directorio de instalación.

Gracias por tu ayuda.

InformationsquelleAutor georgiana_e | 2013-08-10

6 Comentarios

  1. 19

    Parece que usted está usando JDK8 para la compilación y versión Inferior en Donde se están utilizando.

    Así

    Suponiendo el uso de eclipse, Window > Preferences > Compiler > compiler level

    y, a continuación, establezca nivel inferior(< actual ).

    • Soy compilar desde la línea de comandos en ubuntu y no he podido cambiar el compilador de nivel inferior, he utilizado la siguiente sintaxis: javac -1.6 WordCount.java pero no funcionó y me sale un error «invalid bandera -1.6».
    • Trabajó después he cambiado la compilación de nivel. Muchas gracias.
    • Son bienvenidos.Encantados de ayudarle 🙂
  2. 4

    Yo tenía el mismo problema que he resuelto. He encontrado que
    el JAVA_HOME en mi hadoop-env.sh es /usr/lib/jvm/java-6-openjdk
    pero el JAVA_HOME en /etc/profile es /usr/local/java/jdk1.8.0_25.

    Después de cambiar JAVA_HOME en /etc/profile a /usr/lib/jvm/java-6-openjdk que es el mismo que hadoop-env.sh y uso
    $source /etc/profile # to make /etc/profile effects

    Mi problema está resuelto! Espero que esto te ayude.

  3. 0

    Se ve como alguien se las arregló para compilar una clase con un Java 8 compilador. Vuelva a compilar el infractor frasco con un nivel de cumplimiento de Java 7 o inferior.

  4. 0

    Bueno, obviamente eso no va a funcionar! Usted está compilando una versión de JDK y la implementación en un mayor JDK /JRE. Se necesita compilar en la edad JDK.

    • Muchas gracias, este era el problema. He utilizado el hadoop-core.jar archivo que se compile con java6 y he compilado mi programa con java 8. Funcionó después de que he cambiado la compilación de nivel para que mi programa 1.6.
    • Kool Feliz de Ayudar 🙂
    • Aunque, por supuesto, usted puede utilizar una versión de JDK para alcanzar una mayor bytecode nivel de uso de -source y -target opciones.
  5. 0

    El problema es debido .jsp archivos están siendo compilados con mayor compilador(8) esperado(7). Cambiar todos compilación de los niveles inferiores(es decir, 7) también cambiar el jdk ruta dada en la configuración de eclipse archivo de configuración en la misma carpeta donde .exe se encuentra.

  6. 0

    Creo que ya tienes tu respuesta ..solo para añadir, en eclipse en el marco del proyecto hay un JRE Sistema de Biblioteca [JavaSE-1.x] de la carpeta .. haga clic derecho en él podrás ver JRE Sistema de Biblioteca de la pantalla..no se puede establecer el entorno de ejecución.

Dejar respuesta

Please enter your comment!
Please enter your name here