Cómo arreglar java.lang.UnsupportedClassVersionError: versión major.minor no admitida

1573

Estoy tratando de usar Notepad ++ como mi herramienta todo en uno para editar, ejecutar, compilar, etc.

Tengo JRE instalado y configuré mi variable de ruta al .../bindirectorio.

Cuando ejecuto mi "Hola mundo" en Notepad ++, recibo este mensaje:

java.lang.UnsupportedClassVersionError: test_hello_world :
 Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
       .........................................

Creo que el problema aquí es sobre las versiones; Algunas versiones de Java pueden ser antiguas o demasiado nuevas.

  1. ¿Cómo lo soluciono?
  2. ¿Debo instalar el JDK y configurar mi variable de ruta al JDK en lugar de JRE?
  3. ¿Cuál es la diferencia entre la PATHvariable en JRE o JDK?
ERJAN
fuente
¿Instalaste jdk también? jre es el entorno Java RunTime, para crear aplicaciones java, también necesita jdk
CyprUS
Sí, lo hice, y ahora mi variable de ruta apunta a donde está jdk. todavía tengo este error de "versión menor no compatible 51.0" ¿crees que debería instalar una versión anterior de jdk? estoy usando jdk 1.7.0
ERJAN
20
Esto me sucedió en Mac OS X cuando tenía problemas debido a la extraña situación de Apple java 6 y Oracle java 7 en OSX en estos días. versión corta: compila con JDK7, ejecuta con JDK6, obtén esto.
Warren P
77
En Java ClassName debe comenzar con mayúscula;)
Ashish Panery
55
Para El Capitán, esta respuesta me lo arregló: stackoverflow.com/a/34201991/1615594
tsuz

Respuestas:

1940

El número de versión que se muestra describe la versión de JRE con la que el archivo de clase es compatible.

Los números principales informados son:

Java SE 14 = 58,
Java SE 13 = 57,
Java SE 12 = 56,
Java SE 11 = 55,
Java SE 10 = 54,
Java SE 9 = 53,
Java SE 8 = 52,
Java SE 7 = 51,
Java SE 6.0 = 50,
Java SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45

(Fuente: Wikipedia )

Para solucionar el problema real, debe intentar ejecutar el código Java con una versión más reciente de Java JRE o especificar el parámetro de destino al compilador de Java para indicarle que cree un código compatible con versiones anteriores de Java.

Por ejemplo, para generar archivos de clase compatibles con Java 1.4, use la siguiente línea de comando:

javac -target 1.4 HelloWorld.java

Con las versiones más recientes del compilador de Java, es probable que reciba una advertencia sobre la ruta de clase de rutina de carga no establecida. Más información sobre este error está disponible en una publicación de blog Nueva advertencia de javac para configurar una fuente anterior sin bootclasspath .

Juha Palomäki
fuente
167
"El número de versión que se muestra describe qué versión si se utilizó Java para compilar el código". No, no lo hace. Muestra la versión de JRE con la que el archivo de clase es compatible. Con las opciones de compilación cruzada, puede usar un JDK 1.7 para compilar código con una versión de clase de 1.1 (a través de 1.7).
Andrew Thompson
85
¿Esta respuesta no explica cómo solucionarlo como se hizo la pregunta?
Jonathan Leung
77
Esta es una buena solución para compilar directamente a una versión anterior de Eclipse: stackoverflow.com/a/16345710/2091700
Alphaaa
19
IN eclipse project => Proerties => compilador java; establezca "el nivel de cumplimiento del compilador" en la versión según su jre o jdk. En cuanto a mí, es 1.6 para jre 1.6
Sam
55
Esto puede ocurrir cuando la fuente del compilador se establece en incumplimiento con la compilación actual de JRE / JDK. Por ejemplo, encontré los valores siguientes de la carpeta eclipse .settings, org.eclipse.jdt.core.compiler.compliance = 1.7, org.eclipse.jdt.core.compiler.source = 1.7, org.eclipse.jdt.core.compiler .codegen.targetPlatform = 1.7. Y mi compilador fue 1.6.0_32. El problema se resolvió después de cambiar los valores a 1.6. El problema se originó después de que copié el proyecto desde un espacio de trabajo diferente donde estaba usando JDK 1.7 :(
Gana
367

java.lang.UnsupportedClassVersionError sucede debido a un mayor JDK durante el tiempo de compilación y menor JDK durante el tiempo de ejecución.

Vivek Kumar Ray
fuente
11
+1: cambiando este enlace simbólico ( /etc/alternatives/java -> /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java) a la versión utilizada para la compilación con javac lo resolvió
ezdazuzena
1
¿Cómo puedo hacer el cambio anterior?
Ankur Raiyani
8
Proyecto -> Propiedades -> Compilador Java Habilita la configuración específica del proyecto. Luego seleccione Nivel de cumplimiento del compilador a 1.7, 1.6 o 1.5, compile y pruebe su aplicación.
Vivek Kumar Ray
Cuando me mudé a Java 7, de alguna manera Eclipse siguió intentando ejecutarse en Java 6 ... no tengo idea de por qué. Desinstalar el viejo JDK hizo el truco para mí.
HDave
99
@ezdazuzena solía sudo update-alternatives --config javahacerlo.
Thorbjørn Ravn Andersen
115

En Eclipse, simplemente fui al comando de menú Ventana -> Preferencias -> Java -> Compilador y luego configuré el "Nivel de cumplimiento del compilador" en 1.6.

Cacovsky
fuente
3
En eclipse, algunas veces las facetas del proyecto también deben cambiarse a la versión adecuada de Java.
Bilal Mirza
66
Gracias. Vale la pena señalar que la configuración del entorno de ejecución predeterminado de Eclipse (el JRE que va en la ruta de compilación) es una configuración separada . Había establecido el JRE pero no el nivel de cumplimiento del compilador; Esto lo arregló.
wchargin
¿Y cómo llegó a la conclusión del mensaje de error de que este era el lugar correcto para configurar la opción?
Alexander
Tal vez esto: stackoverflow.com/questions/7073485/… puede ayudar si está usando hormiga y eclipse.
OuuGiii
La pregunta es sobre Notepad ++ pero no sobre Eclipse.
gotwo
60

No te preocupes, lo tengo resuelto.

En realidad es simple: debe instalar AMBOS JRE / JDK con la misma versión.

JRE 6 -> JDK 6

JRE 7 -> JDK 7

Y así.

ERJAN
fuente
29
Java 7 puede manejar 6 sin ningún problema también.
damienix
@damienix Probablemente desee especificar que Java 7 JRE puede manejar una clase compilada de Java 6 sin ningún problema, de lo contrario, su declaración genera confusión.
Frontear
43

Este error significa que está intentando cargar un archivo de "clase" de Java que se compiló con una versión más nueva de Java que la que ha instalado.

Por ejemplo, su .classarchivo podría haber sido compilado para JDK 7 y está intentando ejecutarlo con JDK 6.

Entonces la solución es:

  • Actualice su tiempo de ejecución Java o
  • Vuelva a compilar la clase si tiene la fuente, utilizando su compilador Java local (si tiene una).

    javac FileName.java

Para los desarrolladores, esto puede suceder si otro desarrollador registra un archivo .class, ¡y tienen una versión más nueva de Java que usted!

Brad Parks
fuente
22

Está intentando ejecutar su programa con una versión de Java que no admite la versión en la que se compiló el código. Entonces, básicamente, debe haber compilado su código con una versión superior e intentar ejecutarlo con una versión inferior.

Como estas obteniendo

Unsupported major.minor version 51.0

y la versión 51.0 corresponde a J2SE 7, lo más probable es que haya compilado su código en Java 7 e intente ejecutarlo con una versión inferior. Comprueba lo que se java -versionmuestra. Debería ser la versión Java 7. Si no, realice los cambios apropiados en PATH / JAVA_HOME. O puede compilar con la misma versión que está intentando ejecutar el código. Si las configuraciones son confusas, siempre puede dar una ruta absoluta /home/user/jdk1.7.0_11/bin/javacy /home/user/jdk1.7.0_11/bin/java.

Aniket Thakur
fuente
18

Tuve una situación similar en Mac, y el siguiente proceso funcionó para mí:

En la terminal, escriba

vi ~/.profile

Luego agregue esta línea en el archivo y guarde

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk<version>.jdk/Contents/Home

donde la versión es la de su computadora, como 1.7.0_25 .

Salga del editor, luego escriba el siguiente comando para que sea efectivo

source ~/.profile 

Luego escriba java -version para verificar el resultado

java -version 

¿Qué es el .profilearchivo?

El archivo .profile es un archivo oculto. Es un archivo opcional que le dice al sistema qué comandos ejecutar cuando el usuario cuyo archivo de perfil está conectado. Por ejemplo, si mi nombre de usuario es bruno y hay un archivo .profile en / Users / bruno /, todo su contenido se ejecutará durante el procedimiento de inicio de sesión.

Fuente: http://computers.tutsplus.com/tutorials/speed-up-your-terminal-workflow-with-command-aliases-and-profile--mac-30515

Tony
fuente
16

En la ventana del menú de Eclipse -> Preferencias -> Java -> Compilador verifique también "Configurar opciones específicas del proyecto".

Si todavía tiene el error con la misma versión de Java: intente eliminar la carpeta de compilación de su proyecto manualmente. Luego reinicie Eclipse.

Andreas L.
fuente
14

Puede tener alguna biblioteca JAR compilada en Java 7, y solo tiene Java 6 como Java Runtime. Podría suceder con algunas bibliotecas nuevas.

Rio
fuente
14

El problema más común es la configuración incorrecta de su JAVA_HOMEvariable que debe apuntar a la biblioteca correcta del Kit de desarrollo de Java, si tiene varias instaladas.

Para encontrar dónde se encuentra la carpeta SDK Java, ejecute los siguientes comandos:

jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'

Debian / Ubuntu

Para verificar qué java (openjdk) ha instalado, verifique a través de:

dpkg -l "openjdk*" | grep ^i

o:

update-java-alternatives -l

Para cambiarlo, use:

update-alternatives --config java

Prefijo con sudosi es necesario.

para seleccionar la versión alternativa de java.

O compruebe cuáles están disponibles para instalar:

apt-cache search ^openjdk

Prefijo con sudosi es necesario.

Luego puede instalar, por ejemplo:

apt-get install openjdk-7-jre

Prefijo con sudosi es necesario.

Fedora, Oracle Linux, Red Hat

Instale / actualice el paquete apropiado a través de:

yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel

El java-1.7.0-openjdkpaquete contiene solo el Java Runtime Environment. Si desea desarrollar programas Java, instale el java-1.7.0-openjdk-develpaquete.

BSD

Hay un paquete OpenJDK 7 en la colección de puertos de FreeBSD llamado openjdk7 que probablemente necesita ser reconfigurado.

Ver: página wiki de OpenJDK .

Ventanas

Simplemente instale la biblioteca de Java SE Development Kit adecuada desde el sitio de Oracle o instálela

Jenkins

Si tiene este problema con Jenkins, consulte:

Sin embargo, la selección de la versión correcta de Java (más reciente) con update-alternativesdebería funcionar.

kenorb
fuente
Esta respuesta funcionó para mí cuando traté de usar spark2-shell en un host después de agregar el servicio spark a un clúster con cloudera.
Modificado el
12

Me enfrenté al mismo problema cuando estaba trabajando con un script Ant para construir mi aplicación.

Yo uso Eclipse para el desarrollo de mi aplicación, y cambié la versión del compilador en las propiedades de compilación del proyecto. Pero eso no funcionó para mí. Luego descubrí que puedo proporcionar la versión del compilador en el script Ant.

Modifiqué el script Ant en la sección donde compila archivos Java.

<target name="build-java" depends="prepare-build">
    <echo message="Compiling java files"/>
    <javac ....
           target="1.5"...
    </javac>
</target>

Esto funcionó para mí para resolver el problema menor importante no admitido.

Mandar Pandit
fuente
12

Cuando instalé JDK 1.7, el problema se resolvió.

usuario3168034
fuente
12

Tuve el mismo problema con un proyecto escrito en 1.7 e intenté ejecutarlo en 1.6.

Mi solución en Eclipse:

  • Haga clic derecho en las Propiedades del proyecto -> Ruta de compilación de Java -> Bibliotecas

  • Seleccione su Biblioteca del sistema JRE y haga clic en Editar a la derecha, y elija el JRE de destino.

  • Ahora vaya al compilador de Java a la izquierda y cambie el nivel de cumplimiento del compilador a su objetivo.

Eso funcionó para mí.

Ben
fuente
11

Como respondieron varias personas en otras partes, el programa Java se ejecuta en una versión anterior de Java para la que fue compilada. Debe ser "compilado cruzado" para la compatibilidad con versiones anteriores. Para decirlo de otra manera, hay una discrepancia entre las versiones de origen y destino de Java.

El cambio de opciones en los menús de Eclipse no responde al póster original, quien dijo que él / ella no está usando Eclipse. En OpenJDK javac versión 1.7, puede realizar una compilación cruzada para 1.6 si usa parámetros -sourcey -target, además, proporciona el archivo rt.jar de la versión de destino (es decir, la anterior) en tiempo de compilación. Si realmente instala el 1.6 JRE, puede apuntar a su instalación (por ejemplo, /usr/lib/jvm/java-6-openjdk-i386/jre/lib/rt.jar en Ubuntu, / usr / jdk / jdk1. 6.0_60 / jre / lib / rt.jar en SunOS aparentemente. Lo siento, no sé dónde está en un sistema Windows). Al igual que:

javac -source 1.6 -target 1.6 -bootclasspath /usr/lib/jvm/java-6-openjdk-i386/jre/lib/rt.jar HelloWorld.java

Parece que puedes descargar rt.jar de Internet y señalarlo. Sin embargo, esto no es demasiado elegante:

javac -source 1.6 -target 1.6 -bootclasspath ./rt.jar HelloWorld.java
Mace Ojala
fuente
10

Basado en esto...

J2SE 8 = 52
J2SE 7 = 51
J2SE 6.0 = 50
J2SE 5.0 = 49
JDK 1.4 = 48
JDK 1.3 = 47
JDK 1.2 = 46
JDK 1.1 = 45

En Eclipse, haga clic derecho en el proyecto en el explorador de paquetes:

Ruta de compilación -> Configurar ruta de compilación

Debajo:

Ruta de compilación de Java -> Bibliotecas -> Agregar biblioteca -> Biblioteca del sistema JRE -> JRE instalados -> Buscar .

Agregue el JRE requerido seleccionando la biblioteca en la lista disponible después de completar la búsqueda.

Adit Ya
fuente
10
  • Si usa Maven, configure su nivel de compilación de Java. Abra una línea de comando y escriba java -versionpara su nivel de compilación:

    Ingrese la descripción de la imagen aquí

  • Si utiliza IntelliJ IDEA, seleccione Proyecto → ArchivoConfiguraciónConstruir ejecución de despliegueCompiladorcompilador Java . Luego cambie el código de bytes como 1.7 como esta imagen:

    Ingrese la descripción de la imagen aquí

etemsulano
fuente
También necesitaba hacer una instalación limpia de maven después de cambiar el pom.
Joe Borysko
10

Si enfrenta este problema mientras usa Maven , puede compilar su código usando el compilador de Maven .

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

ACTUALIZACIÓN: establecer sourcey targetpara 1.8, si está utilizando JDK 8.

Thamme Gowda
fuente
un fragmento sobre la forma de utilizar el plugin para cruzada compilte sería muy bueno en vez de visitar / abrir el enlace
coding_idiot
8

Recibí el mismo mensaje de error cuando ejecuté Ant desde Eclipse, pero las otras soluciones mencionadas aquí no resolvieron mi problema. Lo curioso fue que ejecutar Ant desde la línea de comandos de Windows funcionaba bien, por lo que tenía que ser un problema de configuración dentro de Eclipse.

Resultó que bajo Eclipse puede especificar el entorno con el que Ant debería estar ejecutándose y esto se configuró como un JRE en lugar de un JDK.

  • Vaya a: Ejecutar -> Herramientas externas -> Configuraciones de herramientas externas ...
  • Seleccione Ant build.xml para su proyecto (si tiene varios proyectos)
  • Active la pestaña 'JRE'
  • Aquí se seleccionó 'JRE separado: jre6'. Cuando cambié esto a un JDK de la serie 1.6 o 1.7, el error desapareció.
ckielstra
fuente
8

¿Cómo lo soluciono?

Este error significa que el JRE que se está utilizando para ejecutar su código de clase no reconoce la versión de Java utilizada. Por lo general, porque la versión de Java que generó su archivo de clase (es decir, lo compiló) es más nueva.

Para solucionarlo, puedes

a) Compile sus fuentes Java con la misma versión, o anterior, del compilador Java que se utilizará para ejecutarlo. es decir, instale el JDK apropiado.

b) Compile sus fuentes de Java con la versión más reciente del compilador de Java pero en modo de compatibilidad. es decir, usar el -targetparámetro.

c) Ejecute sus clases compiladas en un JRE que sea la misma o más nueva versión que el JDK utilizado para compilar las clases.

Puede verificar las versiones que está utilizando actualmente javac -versionpara el compilador y java -versionpara el tiempo de ejecución.

¿Debo instalar el JDK y configurar mi variable PATH en el JDK en lugar de JRE?

Para la compilación, ciertamente, instale y configure el JDK específico que desea.

Para el tiempo de ejecución, puede usar el que viene con el JDK o un JRE independiente, pero independientemente, asegúrese de haber instalado las versiones correctas y de haber configurado su RUTA para que no haya sorpresas.

¿Cuál es la diferencia entre la variable PATH en JRE o JDK?

La variable de entorno PATH le dice al shell de comandos dónde buscar el comando que escribe. Cuando escribe java, el intérprete de shell de comandos buscará en todas las ubicaciones especificadas en la PATHvariable, de izquierda a derecha, para encontrar el javaejecutable de tiempo de ejecución apropiado para ejecutar. Si tiene instaladas varias versiones de Java, es decir, tiene eljava ejecutable en varias ubicaciones especificadas en la variable PATH, entonces la primera que se encuentre al ir de izquierda a derecha será la que se ejecute.

El comando del compilador es javacy solo viene con el JDK. El comando de tiempo de ejecución es javay viene con el JDK y está en el JRE.

Es probable que tenga javacinstalada una versión (51.0 = Java 7) , y que también tenga javainstalada la misma versión , pero que otra versión anterior javaesté apareciendo anteriormente en la RUTA y se invoque en lugar de la que espera .

Vihung
fuente
7

Ha utilizado una versión superior de JDK para compilar e intentar ejecutar desde una versión inferior de JDK / JRE .

Para verificar esto, vea la información de la versión:

javac -version

java -version

Serán diferentes y javac tendrá un número de versión más alto.

Para evitar esto, ejecute usando Java desde la versión JDK o si tiene un JRE / JDK más nuevo que funcionará también.

which javacle dirá la ubicación, por ejemplo /usr/bin/javac,. Solo corre directamente usando/usr/bin/java <program> .

O puede configurar la variable de entorno como una solución permanente.

L Lawliet
fuente
6

Tuve este problema cuando volví a Java 6 e intenté ejecutar clases previamente compiladas con Java 7. Lo que funcionó para mí fue Preferencias> java> compilador -> establecer el nivel de cumplimiento en 1.6 y crucialmente "configurar los ajustes del proyecto".

usuario3534268
fuente
6

Hoy, este mensaje de error apareció en nuestro Tomcat 7 en Ubuntu 12.04.2 LTS (Precise Pangolin):

/var/log/tomcat7/localhost.2014-04-08.log:
8 de abril de 2014 9:00:55 AM org.apache.catalina.core.StandardContext filterStart SEVERE
: Excepción al iniciar el filtro struts2
java.lang.UnsupportedClassVersionError: controlador / ReqAccept: Major.minor versión 51.0 no compatible (no se puede cargar el controlador de clase. ReqAccept)

La aplicación Struts está compilada con Java 7.

Resultó que alguien usa "service tomcat [stop / start]" para reiniciar Tomcat 7,

$ ps -ef | grep java
tomcat7 31783 1 32 20:13? 00:00:03 / usr / lib / jvm / default-java / bin / java ...
$ / usr / lib / jvm / default-java / bin / java -version
versión java "1.6.0_27"

Lo que provoca el error "Versión de major.minor 51.0 no compatible".

Cuando utilizamos "/etc/init.d/tomcat7 [stop / start]" para reiniciar Tomcat 7, el problema se resolvió.

$ ps -ef | grep java
tomcat7 31886 1 80 20:24? 00:00:10 /usr/local/java/jdk1.7.0_15/bin/java
$ /usr/local/java/jdk1.7.0_15/bin/java -version
versión java "1.7.0_15"

oraclesoon
fuente
6

Lo resolví Corrí:

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386

El error es engañoso, Unsupported major.minor version 51.0. Esto da la impresión de que la versión 51 (Java 7) no es compatible. Y deberíamos usar Java 6.

El error debería haber sido:

La versión actual de Java, 50, no es compatible. Utilice Java versión 7 (51: 0 y superior) en su lugar.`

Siddharth
fuente
6

Su archivo Java está compilado con una versión diferente (versión de compilador superior) que la versión (versión de tiempo de ejecución inferior) con la que está intentando ejecutarlo.

Es básico entender que se espera que las clases compiladas con versiones inferiores se ejecuten en las versiones posteriores posteriores. Pero lo contrario (compilado con una versión de compilador superior e intentando ejecutarlo con una versión de tiempo de ejecución inferior) a veces no es posible.

Por lo tanto, se muestra este error al intentar ejecutar su programa. Versión principal x menor no admitida xx

P: He creado una aplicación en Java 7, pero cuando mis usuarios intentan ejecutarla, obtienen un error Major.minor versión 51.0 no compatible. ¿Qué significa esto y qué puedo hacer al respecto?

R: Si compila una aplicación usando javac en Java 7, los archivos de clase resultantes tendrán el número de versión 51.0. Las versiones de Java anteriores a 7 no reconocen este número, por lo que sus usuarios tendrán que actualizar a Java 7 antes de ejecutar su aplicación. Si no está utilizando ninguna API de Java 7, puede intentar compilar su aplicación utilizando javac -target 1.6 para crear un archivo de clase compatible con 1.6. Si su aplicación se implementa utilizando webstart, puede especificar la versión mínima requerida. Para obtener más información, consulte los documentos sobre Java Web Start y JNLP aquí. Este problema desaparecerá una vez que activemos la actualización automática a Java 7 para los usuarios finales que actualmente tienen Java 6 en sus escritorios. La línea de tiempo para esto aún no está determinada, queremos darles a los desarrolladores tiempo para resolver primero cualquier problema entre su código y JDK 7.

(Fuente: oracle.com .)

Manohar
fuente
5

Oh Mac OS XI pude resolver este problema configurando la variable JAVA_HOME:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home
TomTom
fuente
4

Primero veamos algunos conceptos básicos ...

JRE es un componente en NetBeans / Eclipse / autónomo que le proporcionará bibliotecas, JVM, complementos de Java e inicio web de Java. Tenga en cuenta que no proporciona cumplidores o depuradores.

JDK es el superconjunto de JRE junto con compiladores y depuradores.

Entonces, cuando tenga su biblioteca predeterminada como JRE en lugar de JDK, pasará un buen rato importando cosas, pero no se compilará.

En su lugar, configure su ruta a JDK (uso NetBeans, y los configuro usando netbeans.conf en netbeans / etc / netbeans.conf y cambio la ruta).

Creative_Cimmons
fuente
3

Tuve el problema de que tenía que ejecutar una compilación de Maven en mi proyecto desde la línea de comandos para ejecutar mis pruebas unitarias; si realicé un cambio en la clase de prueba y dejé que Eclipse lo recompilara automáticamente, entonces recibí el error "Versión de major.minor 51.0 no compatible".

Tengo instalados JDK6 y JDK7, pero todos mis ajustes de JRE apuntaban a 1.6, tanto en el pom como en la página de propiedades del proyecto en Eclipse. Ninguna cantidad de Maven Update Project y / o refrescante resolvió esto.

Finalmente intenté cerrar el proyecto y volver a abrirlo, ¡y esto pareció solucionarlo! HTH

Matthew Wise
fuente
3

Ha compilado su clase Java con JDK 7 e intenta ejecutar la misma clase en JDK 6.

Sagar Varpe
fuente
3
  • Instale JDK 7.0.55 y configure Java para Eclipse para JDK 7.0.55.
  • Cree el proyecto con JDK 7.0.55 configurando en la ruta de compilación JDK 7.0.55.
  • Configure el compilador en Eclipse para JDK 7.0.55 mediante el menú Windows -> Preferencias -> Java -> Compilador - elija 1.7.
siddmuk2005
fuente
3

La respuesta es para el problema:

Excepción en el hilo "main" java.lang.UnsupportedClassVersionError: edu / stevens / cs549 / dhts / main / LocalContext: Unsupported major.minor versión 52.0

Estaba teniendo el mismo problema. Para aquellos que estaban teniendo este problema en las instancias de AWS ec2, y de alguna manera han sido redirigidos aquí a esta pregunta. Estoy respondiendo por eso, y me gustaría compartirlo como lo hice. Estaba teniendo problemas porque las instancias de Amazon EC2 ejecutaban Java versión 1.7 y tal vez mi proyecto no era compatible porque estaba usando Maven y estaba preconfigurado para Java 1.8. Así que instalé una nueva versión de Java:

sudo yum -y install java-1.8.0

Y luego el paso importante es eliminar la versión anterior:

sudo yum remove java-1.7.0-openjdk

Recuerde eliminarlo después de instalar la nueva versión, de lo contrario, usaría continuamente la misma versión anterior y espero que resuelva su problema, que lo hizo en mi caso.

Siddharth Choudhary
fuente