Tomcat7关机期间的Cobertura NoClassDefFoundError错误

Tomcat7关机期间的Cobertura NoClassDefFoundError错误,tomcat,cobertura,Tomcat,Cobertura,我正在使用最新的Cobertura 2.0 jar,并且已经完成了这里定义的设置 在执行测试用例后,当我试图关闭tomcat(7版)以收集覆盖率数据时,出现以下错误: Exception in thread "Thread-2" java.lang.NoClassDefFoundError: net/sourceforge/cobertura/coveragedata/TouchCollector$ApplyToClassDataLightClassmapListener at

我正在使用最新的Cobertura 2.0 jar,并且已经完成了这里定义的设置

在执行测试用例后,当我试图关闭tomcat(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
一些补充意见

  • 引用的类存在于Cobertura jar文件中

  • 缺少的类是静态嵌套类

  • 早期的cobertura版本中有一个与此相关的bug参考

  • 我可以做什么快速修复,然后从源代码重建cobertura来修复这个问题

    更新:


    在进一步的试验和错误中,它看起来与关机挂钩有关。我没有使用
    WEB-INF/lib
    而是将
    cobertura.jar
    移动到
    tomcat7/lib
    ,这意味着jar现在可以使用,直到tomcat关闭的晚些时候。结果,前面的Cobertura NoClassDef错误消失了,但我在应用程序中的类中得到了NoClassDef错误(可能是因为Cobertura开始尝试为每个类编写覆盖率数据)。cobertura线程崩溃,ser文件未更新。

    我认为这是cobertura中的一个问题:


    您能试试2.0.1版吗?它包含一些额外的修复程序。