Error de versión secundaria mayor no compatible en Java
-
el error
Versión mayor.menor no admitida
en Java -
el error
Versión mayor.menor no admitida
en el proyecto Eclipse
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
.
-
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.
-
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.
-
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
. -
Vaya a
Java Build Path
y luego aBibliotecas
. -
Eliminar la
Biblioteca del sistema JRE
anterior. Seleccione laBiblioteca del sistema JRE
y haga clic enEliminar
. -
El siguiente paso es agregar la
Biblioteca del sistema JRE
. Haz clic enAñadir biblioteca
. -
Seleccione
Biblioteca del sistema JRE
y haga clic enSiguiente
. -
Seleccione la opción
Alternate JRE
y seleccione el último JRE. Haga clic enFinalizar
.
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 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 FacebookArtículo relacionado - Java Error
- Arreglar Java fue iniciado por el código de salida devuelto = 1
- Arreglar JAVA_HOME no se puede determinar a partir del error de registro en R
- Arreglar java.io.IOException: No queda espacio en el dispositivo en Java
- Arreglar Java.IO.NotSerializableException en Java
- Arreglar Java.Lang.IllegalStateException de Android: no se pudo ejecutar el método de la actividad
- Arreglar Java.Lang.NoClassDefFoundError: No se pudo inicializar el error de clase