2013-06-25 23 views
4

我正在使用最新的Cobertura 2.0 jar,并已完成此处定义的设置https://stackoverflow.com/a/5319237/870392Tomcat7关机期间Cobertura NoClassDefFoundError错误

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. 引用的类:

    执行我的测试情况下,当我尝试关闭Tomcat的(第7版)收集覆盖率数据我收到以下错误后存在于Cobertura jar文件中。

  2. 的缺失类是一个静态嵌套类cobertura github code

  3. 有与此相关的较早的Cobertura版本3 March 2010, 1.9.4.1

任何快速修复的错误引用,我可以做的,然后重建cobertura从源头来解决这个问题?

UPDATE:

在进一步的试验和错误,它看起来像是做关闭挂钩。而不是WEB-INF/lib我将cobertura.jar移动到tomcat7/lib这意味着该jar现在可用,直到tomcat关闭期间的一个晚点。因此,以前的Cobertura NoClassDef错误消失了,但是我的应用程序中的类出现NoClassDef错误(可能是因为cobertura开始尝试为每个类编写覆盖率数据)。 cobertura线程崩溃并且ser文件未更新。

+0

你能尝试2.0.1版,其中包括一些额外的修复。 https://sourceforge.net/projects/cobertura/files/cobertura/2.0.1。 – Steve

回答