Я перешел на новейшую версию JDK 7, и у меня возникли проблемы с запуском юнит-теста testng на байт-код, который обрабатывается инструментом покрытия emma.Ни один из моих тестов не выполняется правильно, и для большинства из них я получаю такие ошибки.
java.lang.ClassFormatError: Illegal local variable table length 10 in method measurement.meter.AbstractSerialPortMeter.<init>(Lmeasurement/meter/SerialPort;)V at measurement.meter.Elc3133aTest.setUp(Elc3133aTest.java:42)
Я нашел статью здесь JSR 292 Goodness Fast Code Coverage Tool Less 10k ,который говорит, что «JSR 292 вводит новую инструкцию байт-кода, вызывающую динамическую, но также и несколько новых видов констант пула. Это означает, что большинство инструментов, анализирующих байт-коды, таких как ASM, BCEL, findbugs или EMMA, должны быть обновлены, чтобы быть Java 7совместимо. "
Проверено на домашней странице Эммы, но, похоже, она долгое время не обновлялась.
Кто-нибудь решал подобную проблему?
У меня тоже естьпробовал с кобертурой.Это выглядит работать немного лучше, но я получаю много исключений типа VerifyError
.
java.lang.VerifyError: Expecting a stackmap frame at branch target 85 in method measurement.meter.AbstractSerialPortMeter.close()V at offset 26
at measurement.meter.AbstractSerialPortMeterTest.setUp(AbstractSerialPortMeterTest.java:27)