2013-06-25 4 views
4

Я использую последнюю банку Cobertura 2.0 и выполнил настройку, определенную здесь https://stackoverflow.com/a/5319237/870392.Ошибка Cobertura NoClassDefFoundError во время отключения Tomcat7

После выполнения моих тестовых случаев, когда я пытаюсь выключение кота (версия 7) для сбора данных покрытия я получаю следующее сообщение об ошибке:

Exception in thread "Thread-2" java.lang.NoClassDefFoundError: net/sourceforge/cobertura/coveragedata/TouchCollector$ApplyToClassDataLightClassmapListener 
     at net.sourceforge.cobertura.coveragedata.TouchCollector.applyTouchesToSingleClassOnProjectData(TouchCollector.java:70) 
     at net.sourceforge.cobertura.coveragedata.TouchCollector.applyTouchesOnProjectData(TouchCollector.java:58) 
     at net.sourceforge.cobertura.coveragedata.ProjectData.saveGlobalProjectData(ProjectData.java:324) 
     at net.sourceforge.cobertura.coveragedata.SaveTimer.run(SaveTimer.java:34) 
     at java.lang.Thread.run(Thread.java:722) 
Caused by: java.lang.ClassNotFoundException: net.sourceforge.cobertura.coveragedata.TouchCollector$ApplyToClassDataLightClassmapListener 
     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) 
     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 
     ... 5 more 

Некоторых дополнительные наблюдения

  1. ссылается, класс присутствует в файле банка Cobertura.

  2. недостающее класс статический вложенный класс cobertura github code

  3. Был ссылка ошибка, связанная с этим для выпуска ранее Cobertura 3 March 2010, 1.9.4.1

Любые быстрые затруднительные, которые я могу сделать, чтобы затем восстановить cobertura из источника, чтобы исправить это?

UPDATE:

При дальнейших пробах и ошибках, это выглядит как что-то делать с остановленными крючками. Вместо WEB-INF/lib я переместил cobertura.jar в tomcat7/lib, что означает, что банка теперь доступна до более поздней точки во время остановки tomcat. В результате предыдущая ошибка Cobertura NoClassDef исчезла, но я получаю ошибки NoClassDef для классов в моем приложении (предположительно, когда cobertura начинает пытаться записать данные покрытия для каждого из классов). Сбой потока cobertura и файл ser не обновляется.

+0

Не могли бы вы попробовать версию 2.0.1, которая включает в себя несколько дополнительных исправлений. https://sourceforge.net/projects/cobertura/files/cobertura/2.0.1. – Steve

ответ