Org.jacoco.ant.ReportTask cannot be found: org/jacoco/core/analysis/ICoverageVisitor


(Anuruddika Mahanama) #1

I applied the Jacoco plugin and tried to generate the codeCoverage report. I used jacoco ‘0.6.2.201302030002’ version and gave the required dependencies jars of jacoco.agent and jacoco.ant-0.6.2.201302030002. When execute the gradle jacocoTestReport task it gives bellow error. “taskdef A class needed by class org.jacoco.ant.ReportTask cannot be found: org/jacoco/core/analysis/ICoverageVisitor using the classloader AntClassLoader[C:\LTC_P360\LTCWsBase\lib\org.jacoco.ant-0.6.2.201302030002.jar]”. If I used jacoco-0.6.1.201212231917 version and its ant and agent, jars it is working. how to use latest version of jacoco with gradle?


(Peter Niederwieser) #2

Please post all relevant parts of your build script, along with the output of ‘gradle -v’.


(Anuruddika Mahanama) #3

This is my build script. I’m using Gradle 1.10 version.

group = ‘com.nyl.ltc’

apply plugin : ‘java’ apply plugin: ‘application’ apply plugin: ‘project-report’ apply plugin: “jacoco”

buildDir = “$projectDir/bin”

allprojects {

repositories {

flatDir { dirs “…/lib” }

flatDir { dirs “lib” }

flatDir { dirs “…/XmlTransformer/lib” }

flatDir { dirs “C:/IBM/SDP/runtimes/base_v7/feature_packs/xml/plugins” } // repository location for IBM jars

flatDir { dirs “C:/IBM/SDP/runtimes/base_v7/plugins” }

flatDir { dirs “C:/IBM/SDP/runtimes/base_v7/lib” }

flatDir { dirs “C:/IBM/SDP/runtimes/base_v7/java/jre/lib” }

flatDir { dirs “C:/IBM/SDP/runtimes/base_v7/runtimes” }

}

}

configurations { providedCompile }

sourceSets.main.compileClasspath += configurations.providedCompile sourceSets.test.compileClasspath += configurations.providedCompile sourceSets.test.runtimeClasspath += configurations.providedCompile

sourceSets {

main {

java {

srcDir “$projectDir/src”

}

resources {

srcDir “$projectDir/WebContent/WEB-INF/wsdl”

srcDir “$projectDir/WebContent/WEB-INF/conf”

srcDir “$projectDir/test/WEB-INF/conf”

exclude ‘_serena’

}

test {

java.srcDirs = ["$projectDir/test"]

resources.srcDirs = ["$projectDir/test"]

compileClasspath += configurations.testCompile

runtimeClasspath += sourceSets.test.output

}

} }

clean.doLast {

mkdir("$projectDir/bin") }

compileJava.doFirst {

println ‘copying from LTCWsBase’

copy {

from “$projectDir/src/LTCWsBase”

into “$projectDir/bin/resources/main/LTCWsBase”

exclude ‘_serena’

}

}

dependencies {

providedCompile (group: ‘logback-audit’ , name: ‘audit-client’ , version: ‘0.6’) { project.ext.provided = true }

providedCompile (group: ‘logback-audit’ , name: ‘audit-common’ , version: ‘0.6’) { project.ext.provided = true }

providedCompile (group: ‘slf4j’ , name: ‘slf4j-jdk14’ , version: ‘1.7.5’)

providedCompile (group: ‘slf4j’ , name: ‘slf4j-api’ , version: ‘1.7.5’ )

providedCompile (group: ‘guava’ , name: ‘guava’, version: ‘15.0’)

providedCompile (group: ‘ibm’ , name: ‘com.ibm.xml’)

providedCompile group: ‘J2EE’, name: ‘j2ee’

providedCompile group: ‘J2EE’, name: ‘rt’

providedCompile (group:‘asia.redact.bracket.properties’ , name:‘bracket-properties’ , version: ‘1.3.4’)

providedCompile (group: ‘ibm’ , name: ‘com.ibm.ws.admin.client_7.0.0’)

compile(project(":XmlTransformer"))

providedCompile (group: ‘ch.qos.logback’, name: ‘logback-core’, version: ‘1.0.11’)

testCompile (group: ‘junit’, name:‘junit’, version:‘4.11’)

testCompile (group: ‘xmlunit’ , name: ‘xmlunit’ , version: ‘1.5’)

testCompile (group: ‘org.hamcrest’ , name: ‘hamcrest-core’, version: ‘1.3’)

testCompile (group: ‘slf4j’ , name: ‘slf4j-jdk14’ , version: ‘1.7.5’)

testCompile (group: ‘slf4j’ , name: ‘slf4j-api’ , version: ‘1.7.5’ )

testCompile (group: ‘mock’, name:‘cglib-nodep’, version:‘2.2.2’)

testCompile (group: ‘mock’, name:‘easymock’, version:‘3.1’)

testCompile (group: ‘mock’, name:‘javassist’, version:‘3.18.1-GA’)

testCompile (group: ‘mock’, name:‘objenesis’, version:‘2.1’)

testCompile (group: ‘mock’, name:‘powermock-easymock’, version:‘1.5.1-full’)

providedCompile (group: ‘org.jacoco’, name:‘org.jacoco.agent’, version:‘0.6.2.201302030002’)

providedCompile (group: ‘org.jacoco’, name:‘org.jacoco.ant’, version:‘0.6.2.201302030002’) }

test {

testClassesDir = sourceSets.test.output.classesDir

testLogging {

events ‘started’, ‘passed’

exceptionFormat = ‘full’

}

scanForTestClasses = false

include “**/*Test.class”

return true }

htmlDependencyReport{}

jacoco {

toolVersion = “0.6.2.201302030002”

reportsDir = file("$buildDir/JacocoCodeCoverageReportDir") }

task applicationCodeCoverageReport(type:JacocoReport){

executionData run

sourceSets sourceSets.main }

/////

tasks.withType(Compile) {

options.debug = true

options.compilerArgs = ["-g"]

} /////


(Peter Niederwieser) #4

Please only post the relevant parts of your build scripts (or, even better, a minimal reproducible sample), and enclose them in HTML code tags.


(Anuruddika Mahanama) #5

Sorry for the inconvenience. Bellow scripts are relevant to the jacoco code coverage report. Thanks for your support.

apply plugin : ‘java’ apply plugin: ‘jacoco’

dependencies {

providedCompile (group: ‘org.jacoco’, name:‘org.jacoco.agent’, version:‘0.6.2.201302030002’)

providedCompile (group: ‘org.jacoco’, name:‘org.jacoco.ant’, version:‘0.6.2.201302030002’) }

jacoco {

toolVersion = “0.6.2.201302030002”

reportsDir = file("$buildDir/JacocoCodeCoverageReportDir") }

task applicationCodeCoverageReport(type:JacocoReport){

executionData run

sourceSets sourceSets.main }


(Peter Niederwieser) #6

Why do you declare the JaCoCo dependencies yourself, rather than leaving this to the plugin? Also, the dependencies have to go on the ‘jacocoAgent’ and ‘jacocoAnt’ configurations, respectively. Otherwise, the dependency declarations won’t be used by the JaCoCo plugin.

PS: Please use HTML code tags for all code snippets.


(Anuruddika Mahanama) #7

without declaration of jacoco dependencies it gives bellow error.

taskdef A class needed by class org.jacoco.ant.ReportTask cannot be found: org/jacoco/core/analysis/ICoverageVisitor using the classloader AntClassLoader[C:\LTC_P360\LTCWsBase\lib\org.jacoco.ant-0.6.2.201302030002.jar]


(Peter Niederwieser) #8

That’s the same error as with your declarations, which just proves that they don’t do anything. One possible cause for the error is that you don’t have the correct dependencies in your ‘flatDir’ repositories. I recommend to first try with a ‘mavenCentral()’ repository, then make sure you provide the exact same dependencies (verify by running ‘gradle dependencies’ and finding/downloading the dependencies via http://search.maven.org) via your ‘flatDir’ repositories.


(Bair) #9

I’m seeing this same error message. In my case, I need to use a special version of Jacoco because I’m building with Java 8 byte codes, and the shipping version of Jacoco doesn’t support it yet. My build script is as such:

apply plugin: 'java'
apply plugin: 'osgi'
apply plugin: 'jacoco'
  test{
    useTestNG()
}
  jacoco {
    toolVersion = '0.6.4.201311160552'
}

This is a sub-project. The top-level project defines the repositories:

allprojects {
    repositories {
        maven {
            url 'internal-repository-url-goes-here'
        }
    }
}

The test process works fine, and I know it is instrumenting with jacoco because before I used the right libraries (https://github.com/jacoco/jacoco/issues/74). Now that I’m using the right jacoco library, it is building fine. However when it comes to generating the report, it fails because the ant task doesn’t have the right version of the jacoco core jar:

FAILURE: Build failed with an exception.
  * What went wrong:
Execution failed for task ':Device:ApplicationFramework:jacocoTestReport'.
> taskdef A class needed by class org.jacoco.ant.ReportTask cannot be found: org/jacoco/core/analysis/ICoverageVisitor
   using the classloader AntClassLoader[/Users/rbair/.gradle/caches/modules-2/files-2.1/org.jacoco/org.jacoco.ant/0.6.4.201311160552/215bfbeaccfcb5dcfc55523effe956ca168ebd68/org.jacoco.ant-0.6.4.201311160552.jar]

(Peter Niederwieser) #10

If you don’t take the artifacts from Maven Central, make sure that your artifacts are packaged exactly in the same way as those on Central. (Note that the jacoco-agent Jar on Central contains another Jar.) If this doesn’t help, then I suspect it’s a JaCoCo problem (e.g. jacoco-ant not yet updated for jacoco-agent).


(Andy Olsen) #11

For me, I just needed to add a ref to the report jar in my dependencies

providedCompile (group: ‘org.jacoco’, name:‘org.jacoco.report’, version:‘0.6.2.201302030002’)