Meine Webanwendung läuft unter JDK 1.7 einwandfrei, stürzt jedoch mit der folgenden Ausnahme unter 1.8 ab (beim Start des Anwendungsservers mit Jetty 8). Ich verwende die Spring-Version: 3.2.5.RELEASE.
Ausnahme:
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
Ich gehe davon aus, dass das Problem aufgrund der Bibliothek spring und "asm.jar" auftritt, von der es abhängt.
Wie löse ich das?
Antworten:
Wie @prunge und @Pablo Lozano angegeben haben, benötigen Sie Spring 4, wenn Sie Code nach Java 8 kompilieren möchten (--target 1.8). Sie können jedoch weiterhin Apps auf Java 8 ausführen, die auf Java 7 kompiliert wurden, wenn Sie Spring 3.2.X ausführen.
Überprüfen Sie http://docs.spring.io/spring/docs/current/spring-framework-reference/html/new-in-4.0.html
quelle
Wenn dieser Fehler auch beim Kompilieren mit -target 1.7 auftritt, beachten Sie bitte, dass dies auf einen Fehler in Spring Framework zurückzuführen ist, der dazu führt, dass ASM-Klassenleser JDK-Klassen (Java. * Oder Javax. *) Lädt, was natürlich der Fall ist kompiliert mit -target 1.8.
Dies kann in Kombination mit der alten ASM-Version im Frühjahr 3.2.8 und niedriger, die das Parsen von Dateien der Klasse 1.8 nicht unterstützt, ebenfalls zu diesem Fehler führen.
Weitere Informationen zu diesem Problem finden Sie hier: https://jira.spring.io/browse/SPR-11719
Dies sollte in Spring Framework Version 3.2.9 behoben werden, die in Kürze veröffentlicht wird.
Ein Upgrade auf Spring Framework 4 behebt natürlich auch das Problem, da es bereits eine neuere Version von ASM enthält.
Wenn Sie jedoch aus irgendeinem Grund noch kein Upgrade auf Version 4 durchführen können, ist es gut zu wissen, dass es (bald) eine Alternative gibt.
quelle
Wenn Sie Java 8 oder die nächste Version verwenden, müssen Sie die Spring-Version aktualisieren. Die Spring-Version sollte 4.xxx sein
quelle
Ich hatte das gleiche Problem und löste es. Ich verwende Spring 3.x mit Java 8. Wenn die oben genannten Lösungen nicht funktionieren, ändern Sie die Gläser und suchen Sie, ob diese Gläser mit der von Ihnen verwendeten Java-Version kompatibel sind oder nicht. spring 3.x ist nicht kompatibel mit java 8.
quelle
Spring 4 kann für Java 8 verwendet werden, um dieses Problem zu beheben. Ich habe es gerade getestet und es funktioniert. Dieses Problem wurde seit der Version Spring 3.2.9-RELEASE behoben.
quelle