Error de versión secundaria mayor no compatible en Java

Sheeraz Gul 15 febrero 2024
  1. el error Versión mayor.menor no admitida en Java
  2. el error Versión mayor.menor no admitida en el proyecto Eclipse
Error de versión secundaria mayor no compatible en Java

El error Versión mayor.menor no admitida o Java.lang.UnsupportedClassVersionError ocurre debido a un JDK más bajo durante el tiempo de ejecución y un JDK más alto durante la compilación. Este tutorial demuestra cómo resolver la Versión mayor.menor no admitida en Java.

el error Versión mayor.menor no admitida en Java

El JDK debe ser el mismo durante la compilación y el tiempo de ejecución, o al menos el JDK en tiempo de compilación no debe ser mayor que el JDK en tiempo de ejecución; de lo contrario, arrojará el error Java.lang.UnsupportedClassVersionError o Versión mayor.menor no admitida.

Probemos un ejemplo que arrojará este error porque usamos Java 1.8 para compilarlo y 1.7 para ejecutarlo. Ver ejemplo:

public class Unsupported_Version_Error {
  public static void main(String args[]) {
    System.out.println("Hello this is Delftstack.com");
  }
}

El código anterior generará la excepción de versión no compatible, como se muestra a continuación.

Exception in thread "main" java.lang.UnsupportedClassVersionError: Unsupported_Version_Error : Unsupported major.minor version 52.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    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:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)

El resultado muestra el error porque el código se compila en Java 1.8 y se ejecuta en Java 1.7. debido a que Major version 52 denota Java SE 8, se generará el error Unsupported major.minor version 52.0.

La solución es construir la aplicación con las mismas versiones en tiempo de compilación y ejecución, o al menos la versión en tiempo de compilación es menor que la versión en tiempo de ejecución. La lista de las versiones de JRE compatibles con la clase se encuentra a continuación.

Java SE 17 = 61,
Java SE 16 = 60,
Java SE 15 = 59,
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

Siga los consejos a continuación para resolver el error Versión mayor.menor no admitida.

  1. Podemos actualizar la versión de JRE en nuestro entorno de producción a la última versión. O al menos similar al entorno de construcción.

  2. Si no es posible actualizar JRE, podemos degradar el JDK en el entorno de compilación para que coincida con la versión en el entorno de producción o reducirlo desde el entorno de producción.

  3. Una solución simple es utilizar la compilación cruzada de Java. Si el JDK del entorno de producción es inferior al entorno de compilación, podemos generar un archivo de clase con una versión inferior mediante la compilación cruzada.

    El siguiente comando se usará para crear un archivo de clase para el código anterior.

javac -target 1.7 Unsupported_Version_Error.java

El comando anterior generará el archivo de clase Unsupported_Version_Error.java, que será compatible con la versión 1.7 del JDK para que podamos ejecutarlo en el entorno de compilación.

el error Versión mayor.menor no admitida en el proyecto Eclipse

Si está utilizando un IDE como Eclipse, entonces debemos cambiar la versión de Java del proyecto actual en el IDE. Siga los pasos a continuación para cambiar la versión de Java en Eclipse, lo que resolverá el error Versión mayor.menor no admitida.

  • Haga clic con el botón derecho en el nombre del proyecto en Eclipse y vaya a Propiedades.

    Propiedades del proyecto Java

  • Vaya a Java Build Path y luego a Bibliotecas.

    Ruta de compilación de Java

  • Eliminar la Biblioteca del sistema JRE anterior. Seleccione la Biblioteca del sistema JRE y haga clic en Eliminar.
  • El siguiente paso es agregar la Biblioteca del sistema JRE. Haz clic en Añadir biblioteca.

    Añadir biblioteca

  • Seleccione Biblioteca del sistema JRE y haga clic en Siguiente.

    Biblioteca del sistema JRE

  • Seleccione la opción Alternate JRE y seleccione el último JRE. Haga clic en Finalizar.

Siguiendo este proceso, nuestro entorno de producción JRE será similar o superior al entorno de compilación y se solucionará el error Versión mayor.menor no admitida.

Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Artículo relacionado - Java Error