在eclipse编辑器中获取此错误

时间:2014-09-30 09:18:16

标签: java eclipse macos cobertura

我在eclispe编辑器中突然收到此错误它以前工作过。我使用的是Mac OSx enter image description here

我之前没有得到它。我正在使用工作正常的ant构建项目。我正在使用Eclipse 4.3.2。它是否特定于MAC OS?我也是cobertura生成报告。此外,当我运行一个groovy测试用例时,我得到了这个

java.lang.NoClassDefFoundError: net/sourceforge/cobertura/coveragedata/HasBeenInstrumented
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at java.lang.Class.getDeclaredFields0(Native Method)
    at java.lang.Class.privateGetDeclaredFields(Class.java:2436)
    at java.lang.Class.getDeclaredFields(Class.java:1806)
    at org.spockframework.runtime.SpecInfoBuilder.buildFields(SpecInfoBuilder.java:86)
    at org.spockframework.runtime.SpecInfoBuilder.doBuild(SpecInfoBuilder.java:57)
    at org.spockframework.runtime.SpecInfoBuilder.build(SpecInfoBuilder.java:42)
    at org.spockframework.runtime.Sputnik.getSpec(Sputnik.java:78)
    at org.spockframework.runtime.Sputnik.runExtensionsIfNecessary(Sputnik.java:86)
    at org.spockframework.runtime.Sputnik.getDescription(Sputnik.java:55)
    at org.junit.runner.Runner.testCount(Runner.java:41)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.countTestCases(JUnit4TestClassReference.java:30)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.countTests(RemoteTestRunner.java:487)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:455)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ClassNotFoundException: net.sourceforge.cobertura.coveragedata.HasBeenInstrumented
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 28 more

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

一年前,Cobertura几乎已经死了。它可以处理的最新Java版本是JDK6。所以你的问题可能是由更新版本的Java造成的。

最近有一些发展,但我担心的是:

所以我们切换到了名为JaCoCo的不同覆盖工具。它可以处理Java7覆盖(到目前为止还不确定Java8)。如果你想在Eclipse中使用漂亮的插件,请转到帮助 - > Eclipse Marketplace ... - >在“查找栏”中键入“EclEmma” - >走。这个插件是在引擎盖下使用JaCoCo。

修改

在发布你的Java和Cobertura版本之后,我的嫌疑人变成了现实。您的Cobertura版本仅适用于Java6。你想以某种方式更新Cobertura版本,或者切换到上面提出的替代方案。