Java 1.8 ASM ClassReader n’a pas réussi à parsingr le fichier de classe – probablement en raison d’une nouvelle version du fichier de classe Java qui n’est pas encore prise en charge

Mon application Web fonctionne correctement sur JDK 1.7 mais se bloque sur 1.8 avec l’exception suivante (lors du démarrage du serveur d’applications avec Jetty 8). J’utilise la version Spring: 3.2.5.RELEASE.

Exception:

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

Je suppose que ce problème est dû au spring et à la bibliothèque “asm.jar” dont il dépend.

Comment résoudre ça?

Comme @prunge et @Pablo Lozano ont déclaré, vous avez besoin de Spring 4 si vous voulez comstackr du code en Java 8 (–target 1.8), mais vous pouvez toujours exécuter des applications sur Java 8 compilées en Java 7 si vous exécutez Spring 3.2.X.

Découvrez http://docs.spring.io/spring/docs/current/spring-framework-reference/html/new-in-4.0.html

Notez que le niveau Java 8 bytecode (-target 1.8, requirejs par -source 1.8) est uniquement pris en charge à partir de Spring Framework 4.0. En particulier, les applications basées sur Spring 3.2 doivent être compilées avec un maximum de Java 7 comme cible, même si elles sont déployées sur un environnement d’exécution Java 8. Veuillez passer à Spring 4 pour les applications basées sur Java 8.

Si vous rencontrez cette erreur même si vous comstackz avec -target 1.7, veuillez noter que ceci est dû à un bogue dans Spring Framework qui amène le classer ASM à charger les classes jdk (java. * Ou javax. *), Qui sont, bien sûr, compilé avec -target 1.8.

Ceci, combiné avec l’ancienne version d’ASM au spring 3.2.8 et au-dessous, qui ne supporte pas l’parsing des fichiers de classe 1.8, peut également conduire à cette erreur.

Plus d’informations sur le problème peuvent être trouvées ici: https://jira.spring.io/browse/SPR-11719

Cela devrait être corrigé dans la version 3.2.9 de Spring Framework, qui devrait être publiée prochainement.

Bien sûr, la mise à niveau vers Spring Framework 4 résoudra également le problème, car elle contient déjà une version plus récente d’ASM.

Cependant, si pour une raison quelconque vous ne pouvez pas encore passer à la version 4, il est bon de savoir qu’il existe une alternative (bientôt).

si vous utilisez java 8 ou la version suivante, vous devez mettre à niveau la version spring et la version spring doit être 4.xxx

Spring 4 peut être utilisé pour Java 8 afin de résoudre ce problème. Je viens de le tester et ça marche. Ce problème est résolu depuis 3.2.9-RELEASE.