Java 1.8 ASM ClassReader no pudo analizar el archivo de clase, probablemente debido a una nueva versión del archivo de la clase Java que aún no es compatible

Mi aplicación web funciona bien en JDK 1.7 pero se bloquea en 1.8 con la siguiente excepción (durante el inicio del servidor de aplicaciones con Jetty 8). Estoy usando la versión de Spring: 3.2.5.RELEASE.

Excepción:

org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet

Supongo que ese problema ocurre debido a la spring y a la biblioteca “asm.jar” de la que depende.

¿Cómo resuelvo esto?

Como afirman @prunge y @Pablo Lozano, necesitas Spring 4 si quieres comstackr código en Java 8 (–target 1.8), pero aún puedes ejecutar aplicaciones en Java 8 comstackdas en Java 7 si ejecutas en Spring 3.2.X.

Consulte http://docs.spring.io/spring/docs/current/spring-framework-reference/html/new-in-4.0.html

Tenga en cuenta que el nivel de código de bytes de Java 8 (-objective 1.8, según lo requerido por -source 1.8) solo es totalmente compatible a partir de Spring Framework 4.0. En particular, las aplicaciones basadas en Spring 3.2 deben comstackrse con un máximo de Java 7 como objective, incluso si se implementan en un tiempo de ejecución Java 8. Actualice a Spring 4 para aplicaciones basadas en Java 8.

Si encuentra este error incluso si comstack con -target 1.7, tenga en cuenta que esto se debe a un error en Spring Framework que hace que ASM classreader cargue las clases jdk (java. * O javax. *), Que son, por supuesto, comstackdo con -objective 1.8.

Esto, combinado con la versión anterior de ASM en la spring 3.2.8 y siguientes, que no admite el análisis de archivos de clase 1.8, también puede generar este error.

Puede encontrar más información sobre el problema aquí: https://jira.spring.io/browse/SPR-11719

Esto debería solucionarse en Spring Framework versión 3.2.9, que se publicará próximamente.

Por supuesto, la actualización a Spring Framework 4 también resolverá el problema, ya que ya contiene una versión más nueva de ASM.

Sin embargo, si por alguna razón no puede actualizarse a la versión 4, es bueno saber que hay una alternativa (próximamente).

si usa java 8 o la próxima versión, necesita actualizar la versión de resorte y la versión de resorte debe ser 4.xxx

Spring 4 se puede usar para Java 8 para resolver este problema. Acabo de probarlo y funciona. Este problema se corrigió desde 3.2.9-LIBERACIÓN.