Pregunta Cómo solucionar java.lang.UnsupportedClassVersionError: versión major.minor no soportada


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

yo tengo JRE instalado, y he configurado mi variable de ruta al directorio ... / bin.

Cuando ejecuto mi "Hola mundo" en Notepad ++, obtengo 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 versiones; alguna versión de Java puede ser vieja o demasiado nueva.

  1. ¿Cómo lo arreglo?
  2. ¿Debo instalar el JDK y configurar mi variable de ruta al JDK en lugar de JRE?
  3. ¿Cuál es la diferencia entre el PATH variable en JRE o JDK?

1384
2018-04-30 11:28


origen


Respuestas:


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

Los principales números reportados son:

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, intente ejecutar el código Java con una versión más nueva de Java JRE o especifique el parámetro de destino en el compilador de Java para indicar al compilador que cree un código compatible con las 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 nuevas del compilador de Java, es probable que reciba una advertencia acerca de que la ruta de la clase de arranque no está configurada. Más información sobre este error está disponible en la publicación de blog Nueva advertencia de javac para configurar una fuente anterior sin bootclasspath.


1773
2017-07-11 11:59



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


328
2018-06-28 06:48



En Eclipse, acabo de ir al comando de menú Ventana -> Preferencias -> Java -> Compilador y luego configure "Nivel de cumplimiento del compilador" en 1.6.


111
2018-05-02 18:58



No te preocupes, lo tengo resuelto.

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

JRE 6 -> JDK 6

JRE 7 -> JDK 7

Y así.


55
2018-05-04 06:23



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

Por ejemplo, tu .class archivo podría haber sido compilado para JDK 7, y está tratando de ejecutarlo con JDK 6.

Entonces la solución es:

  • Actualice su tiempo de ejecución de Java o
  • Recompile la clase si tiene la fuente, usando su compilador local de Java (si tiene uno).

    javac FileName.java

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


37
2018-02-20 19:02



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 utilizando una versión inferior.

Como estas recibiendo

Unsupported major.minor version 51.0

y versión 51.0 corresponde a J2SE 7 Probablemente haya compilado su código en Java 7 y trate de ejecutarlo usando una versión más baja. Revisar qué java -versionmuestra. Debería ser la versión de Java 7. Si no realiza los cambios apropiados en la RUTA / JAVA_HOME. O puede compilar con la misma versión que está tratando de ejecutar el código. Si las configuraciones son confusas siempre puedes dar un camino absoluto /home/user/jdk1.7.0_11/bin/javac y /home/user/jdk1.7.0_11/bin/java.


20
2017-10-01 08:51



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

En la terminal, escribe

vi ~/.profile

A continuación, 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 

Que es .profile ¿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á registrando. Por ejemplo, si mi nombre de usuario es bruno y hay un archivo .profile en / Users / bruno /, todos sus contenidos 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


17
2018-02-11 06:55