gradle - 使用Cobertura会产生NoClassDefFoundError

标签 gradle cobertura

我们正在使用Cobertura(在gradle构建中定义)。当我部署应用程序并在swing客户端中单击时,出现了来自cobertura的NoClassDefFoundError。

java.lang.NoClassDefFoundError: net/sourceforge/cobertura/coveragedata/HasBeenInstrumented
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at com.sun.jnlp.JNLPClassLoader.findClass(JNLPClassLoader.java:345)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)

我不知道这是从哪里来的。在我的Java代码中,cobertura没有任何内容。定义cobertura的唯一地方是在gradle构建文件中作为依赖项:
testCompile "net.sourceforge.cobertura:cobertura:1.9.4.1"

我对两个主要项目做了一个总结:
find -type f -name "*gradle*" -exec grep -Hn cobertura {} \;

结果如下:
./BigTableDataProvider/ext-test/build.gradle:7:def cobSerFile = "$buildDir/cobertura.ser"
./BigTableDataProvider/ext-test/build.gradle:24:    testCompile 'net.sourceforge.cobertura:cobertura:1.9.4.1'
./BigTableDataProvider/ext-test/build.gradle:34:    codeCoverageRun 'net.sourceforge.cobertura:cobertura:1.9.4.1'
./BigTableDataProvider/ext-test/build.gradle:42:    jvmArgs = sampleJvmArg.split(" ").toList() << "-Dnet.sourceforge.cobertura.datafile=$cobSerFile"
./BigTableDataProvider/ext-test/build.gradle:50:        'cobertura-instrument'(datafile: cobSerFile) {
./BigTableDataProvider/ext-test/build.gradle:63:    ant.'cobertura-report'(destdir: "${project.buildDirName}/reports/codeCoverage",

./BigTableExplorer/sample/server/build.gradle:10:    testCompile 'net.sourceforge.cobertura:cobertura:1.9.4.1' // Add this if sample module has inherited classes from server.
./BigTableExplorer/ext-server/build.gradle:20:    testCompile "net.sourceforge.cobertura:cobertura:1.9.4.1"
./BigTableExplorer/ext-test/build.gradle:7:def cobSerFile = "cobertura.ser"
./BigTableExplorer/ext-test/build.gradle:22:    testCompile 'net.sourceforge.cobertura:cobertura:1.9.4.1'
./BigTableExplorer/ext-test/build.gradle:34:    codeCoverageRun 'net.sourceforge.cobertura:cobertura:1.9.4.1'
./BigTableExplorer/ext-test/build.gradle:42:    jvmArgs = sampleJvmArg.split(" ").toList() << "-Dnet.sourceforge.cobertura.datafile=$cobSerFile"
./BigTableExplorer/ext-test/build.gradle:50:        'cobertura-instrument'(datafile: cobSerFile) {
./BigTableExplorer/ext-test/build.gradle:63:    ant.'cobertura-report'(destdir: "${project.buildDirName}/reports/codeCoverage",

最佳答案

您不小心部署了Cobertura测试的代码。 Gradle构建必须使用某些第三方Cobertura插件或Cobertura Ant任务,并且显然配置不正确。

关于gradle - 使用Cobertura会产生NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14014297/

相关文章:

android - Android 6.0+:我的应用禁用了地理位置定位(即使在手机设置和 list 中启用了地理位置定位)

Gradle 尝试解压缩 pom 类型的依赖项

angular - Karma 在开始测试之前不会等待构建完成

ant - 如何删除特定的 Cobertura 警告?

tomcat - Cobertura仪器类

sonarqube - Sonar 5.6 和 Cobertura?

jenkins - Jenkins 管道作业的 Cobertura 代码覆盖率报告

java - 软件包android.support.v7.internal.widget不存在,软件包AdapterViewCompat不存在

android - 无法从外部 gradle 文件中获取未知属性

groovy - 如何为现有的 IDEA 项目创建 Gradle 构建?