2016-07-11 21 views
1

Zunächst möchte ich erwähnen, dass ich viel über dieses Problem gelesen habe und ich keine Lösung gefunden habe.Inkonsistente Stackmap Frames bei Zweig - Java8 Maven Unit Testing

Ich habe einige Unit-Test-Klasse, wo ich Mystatic-Methode für eine andere Klasse verwenden. Wenn ich dann Tests durchführe, wird der Fehler "Inkonsistente Stackmap-Frames bei Zweig ..." angezeigt.

Ich versuchte alle für mich bekannten Wege, z.B. -XX: -UseSplitVerifier oder -noverify params, die zu maven todayfire plugin hinzugefügt wurden, aber keine von ihnen funktioniert gut. Ich habe die ganze Zeit den gleichen Zustand.

Ich habe versucht, Version von PowerMock zu ändern - ältere und neueste - nichts geändert.

Ich benutze Bibliothek: PowerMockito 1,62 (mit Javassist 3.19.0-GA-Version) Java 1.8 Maven 3.2.5

Bitte lassen Sie mich wissen, gibt es eine Arbeitslösung, wie dieses Problem in Java8 vermeiden + ?

Danke für Ihre Hilfe!

+0

'-XX: -UseSplitVerifier' funktioniert nicht mehr mit Java 8. Die einzige Lösung besteht darin, die Tools auf Versionen mit der richtigen Stackmap-Unterstützung zu aktualisieren. Es gab zehn Jahre Zeit ... – Holger

+0

Welche Version von Maven-Surefire-Plugin benutzt du? – khmarbaise

+0

Zuerst war es 2.18.1 dann änderte ich es für die letzte - 2.19.1. Nichts hat sich geändert. – Andrew

Antwort

1

Byte-Code-Manipulationswerkzeuge müssen die Stack-Map-Frames des Codes, den sie ändern, aktualisieren. Andernfalls wird ein VerifierError ausgelöst, wie es in Ihrem Fall passiert. Das Deaktivieren der Überprüfung der Stack-Map-Frames durch Anforderung des alten Verifiers (-XX:-UseSplitVerifier) wird in Java 8 nicht mehr unterstützt.

Ich nehme an, dass Sie einen Fehler in Javassist entdeckt haben, der Stack-Map-Frames kennt und diese wahrscheinlich falsch ausgibt. Versuchen Sie, auf the latest version der Bibliothek zu aktualisieren. Wenn dies nicht funktioniert, erstellen Sie eine Reproduktion des Fehlers und einen Fehler.