2012-08-29 14 views
13

Así que estoy recibiendo estos erroresJava 7 con Emma y junit causando java.lang.VerifyError e ilegales errores variables locales

[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

Y me gustaría saber cómo puedo solucionarlo ...

lo que he leído:

lo que he hecho:

Recursos:

Para alguna razón realmente loca por la que el JUnit pasa en target="test" pero falla en target="emmatest".

Ésta es la salida de línea de comandos desde 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) 

He tratado de establecer los parámetros por defecto para mi java7 JRE a -XX:-UseSplitVerifier de here

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

También he intentado que se queje con JDK 1.6 en el Project Properties.

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

JUnit resultados de las pruebas directas (no hay errores en la traza)

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

estoy fuera de opciones, por favor ayuda! :(

Respuesta

7

sonidos extraños.

En primer lugar, comprobar su código para ver si ha utilizado nueva gramática características introducidas en el JDK 1.7, como try-with-resource o diamond operator.

Me encontré con este VerifyError antes, cuando uso cobertura. Sin embargo, cuando configuro -XX:-UseSplitVerifier en la tarea junit, se resuelve. Lo configuré especificando un elemento anidado <jvmarg> en la tarea junit.

Además, la mayoría de las librerías de cobertura parecen soportar JDK1.7 muy mal. Sin embargo, Jacoco funciona bien con JDK1.7, así que lo estoy usando por ahora.

+0

Gracias he conseguido solucionarlo, con sólo descargar la [JDK6u25] (http : //www.oracle.com/technetwork/java/javase/downloads/jdk-6u25-download-346242.html) y cambiar la ruta de la biblioteca en mi proyecto/eclipse. – Killrawr

+0

@Killrawr ¡Feliz de ver eso! Sí, rebajar la versión de JDK también es una opción. – coolcfan

+1

@Killrawr finalmente logró deshacerse de él degradando a java6 como lo aconsejé :). – SiB

1

-XX:-UseSplitVerifier

funciona para mí y yo no tenía que rebajar JRE de 1,7 a 1,6

Cuestiones relacionadas