Grundlegendes zur Behebung der Ausnahme "Inkonsistente Stackmap-Frames"

Beim Start der Webanwendung wird eine Ausnahme gemeldet, da guice versucht, die angegebene Klasse zu erstellen.

java.lang.VerifyError: Inconsistent stackmap frames at branch target 2770 in method com.aptusi.apps.magazine.api.servlet.internal.EditorServlet.service(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Ljava/lang/String;Lcom/aptusi/persistence/runtime/framework/DboSession;)V at offset 200
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2483)
at java.lang.Class.getDeclaredConstructors(Class.java:1891)
at com.google.inject.spi.InjectionPoint.forConstructorOf(InjectionPoint.java:243)
at com.google.inject.internal.ConstructorBindingImpl.create(ConstructorBindingImpl.java:96)
at com.google.inject.internal.InjectorImpl.createUninitializedBinding(InjectorImpl.java:629)
at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:845)
at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:772)
at com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:256)
at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:205)
at com.google.inject.internal.InjectorImpl.getBinding(InjectorImpl.java:146)
at com.google.inject.internal.InjectorImpl.getBinding(InjectorImpl.java:66)
at com.google.inject.servlet.ServletDefinition.init(ServletDefinition.java:103)
at com.google.inject.servlet.ManagedServletPipeline.init(ManagedServletPipeline.java:82)
at com.google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPipeline.java:102)
at com.google.inject.servlet.GuiceFilter.init(GuiceFilter.java:172)`

Ich kenne die Optionen -XX: -UseSplitVerifier und -noverify jvm, möchte sie jedoch nicht verwenden, da ich sicherstellen möchte, dass der gesamte Code in diesem Projekt mindestens Java Version 7 ist.

Um dies zu tun, wäre es nützlich zu verstehen, wo genau dies in meinem Code vorkommt. Mir ist nicht klar, wie hoch der Offset von 200 ist, aber kann er mit einer Zeilennummer in Beziehung gesetzt werden?

Weiß auch jemand, wie ich die Java-Versionen aller Klassen auf meinem Klassenpfad herausfinden kann? Ich verwende maven, damit es viele Abhängigkeiten gibt. Deshalb suche ich nach einer automatisierten Methode, um Klassen auf dem Klassenpfad zu finden das kann zu einer niedrigeren Java-Version als 1.7 kompiliert worden sein?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage