java.lang.VerifyError: ожидание фрейма stackmap в целевой ветви с Cobertura с использованием mojo

Я использую Cobertura для покрытия своего кода, но при запуске тестовых примеров все тестовые примеры терпят неудачу с ошибкой ниже, когда я запускаю тестовые примеры с использованием сборки maven.

 Reason:
    Expected stackmap frame at this location.
  Bytecode:
    0x0000000: 033d 11ff ff3e 125b 1102 1fb8 0061 2a2b
    0x0000010: 1102 1f3d 1100 003e c600 1912 5b1c 1d04
    0x0000020: b800 b511 ffff 3e2b b600 bbc0 00b7 a700
    0x0000030: 141d 9b00 0f12 5b1c 1d03 b800 b511 ffff
    0x0000040: 3e01 b500 c012 5b11 0220 b800 61b1  

Но когда я запускаю те же тестовые примеры, используя Eclipse run as JUnit command, он работает нормально.


person Siva    schedule 31.08.2016    source источник
comment
Иногда помогает просто отключить проверку байт-кода - см. Здесь: stackoverflow.com/questions/300639/   -  person GhostCat    schedule 31.08.2016
comment
@GhostCat попробовал это, но не сработало ‹groupId› org.codehaus.mojo ‹/groupId› ‹artifactId› cobertura-maven-plugin ‹/artifactId› ‹version› 2.5.1 ‹/version› ‹configuration› ‹argLine› -noverify ‹/argLine›   -  person Siva    schedule 31.08.2016
comment
Затем я предлагаю: внимательно внимательно изучить, что eclipse делает по-другому при вызове JUnit. Какие библиотеки, какие настройки JVM, что угодно.   -  person GhostCat    schedule 31.08.2016


Ответы (2)


В Eclipse просто щелкните правой кнопкой мыши и войдите в конфигурацию обложки и добавьте
-XX:-UseSplitVerifier в аргументы виртуальной машины на вкладке аргументов

person Ashutosh Pandey    schedule 05.04.2017
comment
Есть ли способ поместить это в Gradle, чтобы моя команда могла использовать? - person joyBlanks; 19.07.2018

В моем случае, используя AdoptJDK 11, я смог избавиться от ошибки, используя аргумент -noverify VM. Однако Cobertura не поддерживает Java 1 :(

Для пользователей Gradle:

test {
    jvmArgs '-noverify'
}
person Yuri    schedule 26.02.2020