unsupportedclassversionerror thread number bad java version

exception in thread main java lang unsupportedclassversionerror bad version number in.class file



java.lang.UnsupportedClassVersionError: ¿número de versión malo en el archivo.class? (9)

¿Compiló con Eclipse? Utiliza un compilador diferente (no javac). Eso no debería generar este error (si todo está configurado correctamente), pero puede intentar compilarlo con javac.

Si eso solucionó el problema, intente ver si Eclipse tiene algunas configuraciones de compilador incorrectas. Específicamente, apunte a Java 5.

Recibo este error cuando incluyo una biblioteca de código abierto que tuve que compilar desde el código fuente. Ahora, todas las sugerencias en la web indican que el código se compiló en una versión y se ejecutó en otra versión (nueva en versiones anteriores). Sin embargo, solo tengo una versión de JRE en mi sistema. Si ejecuto los comandos:

$ javac -version javac 1.5.0_18 $ java -version java version "1.5.0_18" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_18-b02) Java HotSpot(TM) Server VM (build 1.5.0_18-b02, mixed mode)

y compruebo en Eclipse las propiedades de la biblioteca java, obtengo 1.5.0_18

Por lo tanto, tengo que concluir que otra cosa, interna a una clase en sí misma, es arrojar la excepción? ¿Es eso posible?


¿Has intentado hacer una "limpieza" completa y luego reconstruir en Eclipse (Proyecto-> Limpiar ...)?

¿Eres capaz de compilar y ejecutar con "javac" y "java" directamente desde la línea de comando? ¿Eso funciona correctamente?

Si hace clic derecho en su proyecto, vaya a "Propiedades" y luego vaya a "Ruta de compilación Java", ¿hay alguna entrada sospechosa debajo de alguna de las pestañas? Este es esencialmente tu CLASSPATH.

En las preferencias de Eclipse, también puede verificar la sección "JRE instalados" en la sección "Java" y asegurarse de que coincide con lo que cree que debería ser.

Definitivamente tiene un archivo .class obsoleto en alguna parte o está obteniendo un desajuste en tiempo de compilación / tiempo de ejecución en las versiones de Java que está utilizando.


Aprendí que los mensajes de error como este suelen ser correctos. Cuando POSSIBLY (en tu mente) no puede ser lo que dice el error que se informa, vas a buscar un problema en otra área ... solo para descubrir horas más tarde que el mensaje de error original era realmente correcto.

Dado que está utilizando Eclipse, creo que Thilo tiene razón. La razón más probable por la que recibe este mensaje es porque uno de sus proyectos compila 1.6 clases. No importa si solo tiene un 1.5 JRE en el sistema, porque Eclipse tiene su propio compilador (no javac), y solo necesita un 1.5 JRE para compilar 1.6 clases. Puede ser extraño, y una configuración debe ser desactivada para permitir esto, pero me las arreglé para hacerlo.

Para el proyecto en cuestión, verifique las Propiedades del proyecto (generalmente Alt + Enter), sección del compilador de Java. Aquí hay una imagen de un proyecto configurado para compilar 1.6, pero con solo un 1.5 JRE.


Otro escenario donde esto podría suceder es cuando está lanzando una instancia de eclipse (para depuración, etc.) desde un eclipse de host, en cuyo caso, alterar el nivel del proyecto o la biblioteca JRE en el classpath del proyecto solo no ayuda. Lo que importa es el JRE utilizado para lanzar el entorno de eclipse de destino.


Siempre busca lo obvio también. Recibí este error una vez cuando accidentalmente agarré el recurso incorrecto para agregar y eliminar acciones del servidor. Puede ser fácil pasar por alto.


También puede borrar los archivos de configuración específicos del proyecto (Eclipse workspace / project folder / .settings /) desde la carpeta del proyecto. Obviamente, tenemos que hacer un proyecto de limpieza y compilación después de eliminar.


También tengo el mismo error. Motivo por el cual estaba compilando el proyecto usando Maven. Tenía JAVA_HOME apuntando a JDK7 y, por lo tanto, java 1.7 se estaba utilizando para la compilación y cuando estaba ejecutando el proyecto estaba usando JDK1.5. Cambiar la entrada siguiente en el archivo .classpath o cambiar en el eclipse como en la captura de pantalla resolvió el problema.

classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5

o cambiar en las configuraciones de ejecución de eclipse como


También verifique cualquier archivo jar en su proyecto que haya sido compilado para una versión superior de Java. Si estas son sus propias bibliotecas, puede solucionar esto cambiando el atributo de la versión de destino a javac

<javac destdir="${classes.dir}" debug="on" classpathref="project.classpath" target="1.6">


cambiando el proyecto para usar Java 1.7: Para que esto funcione, siga estos pasos:

  • Cambiar el nivel de cumplimiento del compilador
  • Cambia tus proyectos JRE / JDK a algo del mismo nivel (1.7 en mi caso)
  • Haga el mismo cambio en todos los proyectos a los que hace referencia su proyecto
  • Cambie su configuración de ejecución / depuración para usar JRE / JDK (o del mismo nivel)

¿No funciona?

  • eliminar proyectos Bin directory
  • Limpiar
  • reconstruir

¿Sigue sin funcionar?

en el directorio de su proyecto: edite .settings / org.eclipse.jdt.core.prefs> asegúrese de que se aplique su nivel objetivo

¡Buena suerte!