eclipse - Java 7 con emma y junit que causan java.lang.VerifyError y errores variables locales ilegales
ant java-7 (2)
-XX:-UseSplitVerifier
Funciona para mí y no tuve que degradar JRE de 1.7 a 1.6
Así que estoy recibiendo estos errores
[junit] Longitud de la tabla de variables locales ilegales 17 en el método test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest. () V
[junit] java.lang.VerifyError: Esperando un marco de mapa de distribución en el destino 11 de rama en el método test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.StressTest. () V en el desplazamiento 4
[junit] java.lang.ClassFormatError: longitud de la tabla de variables locales ilegales 17 en el método test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest. () V
Y me gustaría saber cómo puedo solucionarlo ...
Lo que he leído:
- Java 7 JVM VerifyError en Eclipse
- Testng, Emma, ​​Cobertura, cobertura y resultado JDK 7 en ClassFormatError y VerifyError
- Cobertura de código EMMA
- Uso de EMMA con ANT para informes de cobertura de prueba JUnit
- Error 141252 - compilador 1.6 ClassFormatError: nombre de clase ilegal "" en el archivo de clase (FIJO)
- 3.2. : instrumentando clases de Java sobre la marcha
Qué he hecho:
Recursos:
- build.xml (caducará en 24 horas)
- Salida build.xml (caducará en 24 horas)
- Informe de diagnóstico de Ant (expirará en 24 horas)
- Pregunta anterior
- maven-emma-plugin-0.6.jar
- emma.jar y emma_ant.jar
Por alguna razón realmente loca, el JUnit pasa en target="test"
pero falla en target="emmatest"
.
Esta es la salida del símbolo del sistema de 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 intentado establecer los argumentos predeterminados para mi java7 JRE
a -XX:-UseSplitVerifier
desde aquí
argumentos http://iforce.co.nz/i/dvsh1eoc.n0m.png
También traté de presentar una queja con JDK 1.6
en Project Properties
.
queja http://iforce.co.nz/i/4jxuj4eb.rae.png
JUnit resultados de prueba directa (sin errores en la traza)
junit http://iforce.co.nz/i/wicrvpsi.5gw.png
Estoy sin opciones, ¡por favor ayuda! :(
Suena extraño.
Primero, verifique su código para ver si ha utilizado las nuevas características de gramática introducidas en JDK 1.7, como try-with-resource
o diamond operator
.
Conocí este VerifyError antes, cuando uso cobertura. Sin embargo, cuando configuro -XX:-UseSplitVerifier
en la tarea junit
, se resuelve. Lo configuré especificando un elemento <jvmarg>
anidado a 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.