2012-08-29 19 views
13

Więc Dostaję te błędyJava 7 z Emmą i JUnit powodując java.lang.VerifyError błędów i nielegalnych lokalnych zmiennych

[junit] Illegal local variable table length 17 in method test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest.()V

[junit] java.lang.VerifyError: Expecting a stackmap frame at branch target 11 in method test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.StressTest.()V at offset 4

[junit] java.lang.ClassFormatError: Illegal local variable table length 17 in method test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest.()V

I chciałbym wiedzieć, w jaki sposób mogę to naprawić ...

co czytałem:

co zrobiłem:

Zasoby:

uzyskać jakiś szalony powód, dla którego JUnit przechodzi na target="test", ale kończy się niepowodzeniem na target="emmatest".

Jest to wyjście na wierszu polecenia z java -version

java version "1.7.0_03" 
Java(TM) SE Runtime Environment (build 1.7.0_03-b05) 
Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode) 

Próbowałem ustawienie domyślne argumenty za moim java7 JRE do -XX:-UseSplitVerifier z here

arguments http://iforce.co.nz/i/dvsh1eoc.n0m.png

Ja również próbował złóż skargę pod numerem JDK 1.6 na Project Properties.

bezpośrednie wyniki badań

complaint http://iforce.co.nz/i/4jxuj4eb.rae.png

JUnit (brak błędów na ślad)

junit http://iforce.co.nz/i/wicrvpsi.5gw.png

jestem z opcji, proszę o pomoc! :(

Odpowiedz

7

Brzmi dziwnie.

Po pierwsze, sprawdź swój kod, aby zobaczyć, jeśli użyłeś nowa gramatyka funkcje wprowadzone w JDK 1.7, jak try-with-resource lub diamond operator.

Spotkałem ten VerifyError przed, podczas korzystania z cobertura. Jednak po ustawieniu -XX:-UseSplitVerifier na zadanie junit, zostanie rozwiązany. Ustawiłem go, określając element zagnieżdżony na zadanie na junit.

Ponadto większość bibliotek pokrycia obsługuje bardzo słabo JDK1.7. Jednak Jacoco działa dobrze z JDK1.7, więc używam go na razie.

+0

Dzięki udało mi się go naprawić, po prostu pobierając [JDK6u25] (http : //www.oracle.com/technetwork/java/javase/downloads/jdk-6u25-download-346242.html) i zmiana ścieżki biblioteki w moim projekcie/eclipse. – Killrawr

+0

@Killrawr Szczęśliwy, że to widzę! Tak, zmiana wersji JDK jest również wyborem. – coolcfan

+1

@Killrawr w końcu udało Ci się go pozbyć, obniżając do java6, tak jak mi radziłem :). – SiB

1

-XX:-UseSplitVerifier

działa dla mnie, a ja nie musiał obniżyć JRE z 1,7 do 1,6