Estuve trabajando en un proyecto con Java 17, luego tuve que volver a trabajar en un proyecto anterior, cuya versión era Java 11 y no podía compilar debido al error «Unsupported class file major version 61».
Esto ocurre cuando tenemos archivos compilados en una versión (este caso Java 17) y luego la intentamos ejecutar en otra versión de Java (este caso Java 11). Aunque son dos proyectos distintos y la mayoría de los IDE manejan la versión de Java independiente uno de otro, hay componentes que se comparten y estos causan dicho error.
Para empezar, se debe buscar el error en específico y ver qué indica el mensaje de error. Puede ser un plugin, una dependencia global, una configuración del IDE o Java. Se puede actualizar plugins, el proyecto y sus dependencias a una versión compatible con una versión de Java más reciente, sin embargo a veces no tenemos la libertad de generar grandes cambios a estos proyectos y de ser complejo el cambio, puede llegar a romper el proyecto.
Mi caso se refería a gradle, que se actualizó y compiló con la versión de Java 17, usaba el Gradle wrapper que se compartía de manera global y eso afectó a otros proyectos. Eclipse tiene la opción para seleccionar la versión de gradle a usar por cada proyecto.
Click derecho en el proyecto y vas a las propiedades que se encuentra la final del menú. Luego vamos a la opción de gradle y configuramos la versión en específica para ese proyecto:
No tuve que cambiar el Java Home en ningún momento, mantuve la versión más actual 17
- Para saber el número de versión de Java puedes ingresar a este link https://en.wikipedia.org/wiki/Java_class_file#General_layout
- Para saber la compatibilidad de gradle con la versión de Java puedes ingresar a este link https://docs.gradle.org/current/userguide/compatibility.html