2010-05-25 17 views
5

No soy un programador de Java realmente, así que estoy publicando esta pregunta. La excepción es arrojar java.lang.UnsupportedClassVersionError en mi clase principal en un proyecto de eclipse. Si comente las importaciones que tiene esta clase, compila y funciona bien. Si regreso las importaciones, no funciona. ¿Esto significa que las bibliotecas que estoy importando fueron compiladas con una versión más nueva o más antigua de Java que la que tengo? cuando hago java -version en el sistema me sale 1.5_07java.lang.UnsupportedClassVersionError en eclipse

Podría haber jurado que esto en realidad estaba funcionando la semana pasada, pero ¿tal vez algún ajuste en eclipse se ajustó? ¿Es la ruta de compilación de Java en eclipse lo que debo buscar para verificar las versiones de JRE y del compilador?

Respuesta

14

En Eclipse, la versión del compilador se establece independientemente de la versión de JRE. Eso significa que puede configurar el compilador en Java versión 1.6 y usar el JRE 1.5. En este caso, las clases compiladas no se pueden ejecutar.

Puede consultar las preferencias en Window/Preferences/Java/Compiler para conocer el nivel de cumplimiento del compilador predeterminado o las propiedades de su proyecto para un nivel de cumplimiento del compilador específico del proyecto. Compare ese nivel con el JRE utilizado en su proyecto (Project/Properties/Java Build Path -> Libraries/JRE System Library) y en la configuración de inicio de su programa (a través del menú Run/Run Configurations...).

+0

Este fue el problema. Gracias. No había usado mucho el eclipse y no me había dado cuenta de que podía establecerse independientemente de esa manera – Derek

0

Eclipse no está utilizando el compilador JDK, pero tiene su propio compilador que puede producir bytecode para cualquier JRE. Debe asegurarse de que la configuración del compilador en su proyecto esté configurada en la misma versión o en una versión inferior que el JRE que ha registrado en Eclipse. Consulte Ventana/Preferencias/Java/JRE instalados y también compruebe qué JRE se utiliza en su configuración de inicio (para eso, consulte el menú Ejecutar).

0

Si las clases importadas provienen de una biblioteca externa (es decir, no compiladas de fuentes dentro de su proyecto), entonces debe validar que el JRE utilizado para su proyecto es lo suficientemente nuevo para esta biblioteca.

2

UnsupportedClassVersionError significa que el entorno de ejecución de Java que está utilizando no reconoce la versión de un archivo de clase que está intentando ejecutar. La causa más común de este error es tratar de usar un archivo de clase compilado para una versión Java más nueva en una versión anterior de Java; por ejemplo, está intentando usar una clase compilada para Java 6 en un entorno de tiempo de ejecución de Java 5.

Como explicó Eugene, Eclipse tiene su propio compilador incorporado, no usa el compilador del JDK, por lo que así es como puede terminar con los archivos de clase Java 6 incluso si está ejecutando en Java 5.

Christian explica cómo configurar la versión del archivo de la clase Java en Eclipse.

0

Si usa Maven con Eclipse, puede usar el complemento Maven para actualizar el proyecto y luego hacer una "limpieza" de Maven. Esto resolvió un espectáculo ridículo e inesperado de este error en mi caso.

0

Sé que este es un hilo VIEJO ahora pero tuve una aventura reciente con este tipo de error.

Al intentar compilar mi proyecto dentro de Eclipse usando un archivo de compilación Ant.

  • Eclipse Kepler (Java 1.7)
  • Ant 1.7
  • Proyecto = Java 1,5

Todos los caminos internos y configuración del compilador se modificaron para mirar Java 1.5 y el proyecto construido bien en Eclipse .

Al intentar compilar usando Ant Obtuve el java.lang.UnsupportedClassVersionError en eclipse y comencé a mirar alrededor, incluso aquí y encontrar esta página.

Mi resolución era el siguiente:

Windows > Preferences > Ant > Runtime > Global Entries 

entradas globales señalaba la Java 1.7 tools.jar

he añadido un nuevo tarro exterior (en el menú de la derecha) y apuntó a la Java 1.5 tools.jar

I eliminó la entrada original (para 1.7 tools.jar) y mis compilaciones ant comenzaron a funcionar.

Cuestiones relacionadas