Java 7 - Inkonsistente stackmap-frames - Brauchen Sie Hilfe Verständnis, warum die Lösung funktioniert

Wenn ich kompilieren und ausführen, mein Projekt in Eclipse mit JDK7 oder JDK6 ist alles gut. Aber nachdem ich es bauen mit ANT und dann versuchte zu laufen, es mit dem system JDK7, bekomme ich die Fehlermeldung:

Inkonsistent stackmap-frames bei branch-target 25 in Methode myClass.myMethod() [[Ljava/lang/Objekt; bei offset 14

Ich habe überall gesucht und fand ein paar gute Fragen hier auf StackOverFlow:

Die beiden im Grunde empfehlen, hinzufügen -XX:-UseSplitVerifier als JVM-option, die Tat, das Problem zu lösen. Ich habe noch nicht ganz verstanden, warum, aber anscheinend dieser bug-report wird angenommen, zu helfen. Leider habe ich noch nicht bekommen...

Ich habe bemerkt, auf eine der Fragen, die jemand mit Aspekt-orientierten Programmierung, die mich denke, ich bin mit Guice (Google DI-framework), das könnte das Problem verursachen, aber ich kann nicht sehen, wie. Es ist angenommen, zur Unterstützung von JDK7.

Ich bin auch mit Proguard aber auch das ist wohl um zu arbeiten mit JDK7.

Sowieso an diesem Punkt habe ich keine Ahnung, warum dieser workaround funktioniert, außer es ist im Grunde, fallen Sie zurück zu den vorherigen JDK (in diesem Fall JDK6) version, wenn ein Teil des Codes versucht, zu spielen mit der byte-code (das ist, warum ich denke, dass es im Zusammenhang mit der DI) - code. Aber ich bin noch nicht in der Lage, den richtigen link. Und ich könnte auch Weg sein!!

Wenn jemand erklären könnte, was Los ist oder warum das passiert, ich wäre sehr dankbar. Auch ich hasse es, an einem workaround als das ist nicht das, was ich als eine langfristige Lösung.

  • "Es ist angenommen zu unterstützen JDK7. "vielleicht seine Unterstützung ist buggy. Haben Sie gesucht, die Guice Bugtracker / Gruppen / Listen?
  • Nicht in der Lage, etwas zu finden, in Bezug auf Fehler in deren issue tracker
  • Meine Vermutung wäre, dass in java7 Sie Hinzugefügt haben mehr aggressive byte-code-überprüfen, Kontrollen und was auch immer guice ist das mit dem byte-code zu tun, dessen dependency injection funktioniert nicht mit jenen Prüfungen
  • wenn Sie sagen, Sie bauen mit ant, führen Sie ant von eclipse? Es könnte auch ein bug in der eclipse-compiler, und wenn ja, versuchen, den Bau dieser code mit rein javac, oder aus NetBeans, zum Beispiel.
  • Das Problem ist, dass es funktioniert in eclipse und nicht mit der reinen jvm. Ich benutze auch proguard und dachte, das könnte ein Teil des Problems, aber das ist auch angenommen zu unterstützen JDK7
Schreibe einen Kommentar