Подтвердить что ты не робот

Java 7 с emma и junit вызывает java.lang.VerifyError и нелегальную локальную переменную Ошибки

Итак, я получаю эти ошибки

[junit] Недопустимая длина таблицы локальных переменных 17 в методе test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest.() V

[junit] java.lang.VerifyError: Ожидание фрейма стековой карты в целевой ветки 11 в методе test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.StressTest.() V со смещением 4

[junit] java.lang.ClassFormatError: Недопустимая длина таблицы локальных переменных 17 в методе test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest.() V

И я хотел бы знать, как я могу это исправить...

Что я прочитал:

Что я сделал:

Ресурсы:

По какой-то действительно сумасшедшей причине JUnit проходит на target="test", но не на target="emmatest".

Это вывод командной строки из 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)

Я попытался установить аргументы по умолчанию для моего java7 JRE в -XX:-UseSplitVerifier из здесь

arguments
(источник: iforce.co.nz)

Я также пытался подать жалобу с JDK 1.6 на Project Properties.

complaint
(источник: iforce.co.nz)

Результаты прямого тестирования JUnit (без ошибок на трассировке)

junit
(источник: iforce.co.nz)

У меня нет вариантов, пожалуйста, помогите! :(

4b9b3361

Ответ 1

Звучит странно.

Сначала проверьте код, чтобы узнать, были ли вы использованы новые функции грамматики, представленные в JDK 1.7, например try-with-resource или diamond operator.

Я встретил этот VerifyError раньше, когда использую cobertura. Однако, когда я устанавливаю -XX:-UseSplitVerifier в задачу junit, он разрешен. Я установил его, указав <jvmarg> вложенный элемент в задачу junit.

Кроме того, большинство библиотек покрытия, похоже, очень плохо поддерживают JDK1.7. Однако Jacoco отлично работает с JDK1.7, поэтому я использую его сейчас.

Ответ 2

-XX:-UseSplitVerifier

Работает ли для меня и мне не нужно понижать JRE от 1.7 до 1.6