2

I'm trying to use the Cobertura maven plugin for code coverage. But I am getting an error when running the following command:

mvn clean package cobertura:cobertura -Dcobertura.report.format=xml


Here is how I have the plugin defined in my pom.xml:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>cobertura-maven-plugin</artifactId>
  <version>2.6</version>
  <configuration>
    <formats>
      <format>xml</format>
    </formats>
    <instrumentation>
      <excludes>
        <include>**/*.class</include>
        <exclude>**/*Test.class</exclude>
        <exclude>**/Test*.class</exclude>
      </excludes>
    </instrumentation>
  </configuration>
</plugin>


And here is the error I am receiving:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:09.201s
[INFO] Finished at: Thu Aug 21 17:28:24 GMT+00:00 2014
[INFO] Final Memory: 25M/64M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:cobertura-maven-plugin:2.6:instrument (default-cli) on project project-beta: Execution default-cli of goal org.codehaus.mojo:cobertura-maven-plugin:2.6:instrument failed: A required class was missing while executing org.codehaus.mojo:cobertura-maven-plugin:2.6:instrument: net/sourceforge/cobertura/util/CommandLineBuilder
[ERROR] -----------------------------------------------------
[ERROR] realm =    plugin>org.codehaus.mojo:cobertura-maven-plugin:2.6
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] = file:/data/home/user/.m2/repository/org/codehaus/mojo/cobertura-maven-plugin/2.6/cobertura-maven-plugin-2.6.jar
[ERROR] urls[1] = file:/data/home/user/.m2/repository/net/sourceforge/cobertura/cobertura/2.0.3/cobertura-2.0.3.jar
[ERROR] urls[2] = file:/data/home/user/.m2/repository/org/ow2/asm/asm/4.1/asm-4.1.jar
[ERROR] urls[3] = file:/data/home/user/.m2/repository/org/ow2/asm/asm-tree/4.1/asm-tree-4.1.jar
[ERROR] urls[4] = file:/data/home/user/.m2/repository/org/ow2/asm/asm-commons/4.1/asm-commons-4.1.jar
[ERROR] urls[5] = file:/data/home/user/.m2/repository/org/ow2/asm/asm-util/4.1/asm-util-4.1.jar
[ERROR] urls[6] = file:/data/home/user/.m2/repository/org/ow2/asm/asm-analysis/4.1/asm-analysis-4.1.jar
[ERROR] urls[7] = file:/data/home/user/.m2/repository/oro/oro/2.0.8/oro-2.0.8.jar
[ERROR] urls[8] = file:/data/home/user/.m2/repository/jaxen/jaxen/1.1-beta-8/jaxen-1.1-beta-8.jar
[ERROR] urls[9] = file:/data/home/user/.m2/repository/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar
[ERROR] urls[10] = file:/data/home/user/.m2/repository/jdom/jdom/1.0/jdom-1.0.jar
[ERROR] urls[11] = file:/data/home/user/.m2/repository/xerces/xmlParserAPIs/2.6.2/xmlParserAPIs-2.6.2.jar
[ERROR] urls[12] = file:/data/home/user/.m2/repository/xerces/xercesImpl/2.6.2/xercesImpl-2.6.2.jar
[ERROR] urls[13] = file:/data/home/user/.m2/repository/xom/xom/1.0b3/xom-1.0b3.jar
[ERROR] urls[14] = file:/data/home/user/.m2/repository/com/ibm/icu/icu4j/2.6.1/icu4j-2.6.1.jar
[ERROR] urls[15] = file:/data/home/user/.m2/repository/xalan/xalan/2.6.0/xalan-2.6.0.jar
[ERROR] urls[16] = file:/data/home/user/.m2/repository/org/ccil/cowan/tagsoup/tagsoup/0.9.7/tagsoup-0.9.7.jar
[ERROR] urls[17] = file:/data/home/user/.m2/repository/org/apache/ant/ant/1.8.3/ant-1.8.3.jar
[ERROR] urls[18] = file:/data/home/user/.m2/repository/org/apache/ant/ant-launcher/1.8.3/ant-launcher-1.8.3.jar
[ERROR] urls[19] = file:/data/home/user/.m2/repository/org/mortbay/jetty/servlet-api-2.5/6.1.14/servlet-api-2.5-6.1.14.jar
[ERROR] urls[20] = file:/data/home/user/.m2/repository/org/mortbay/jetty/jetty/6.1.14/jetty-6.1.14.jar
[ERROR] urls[21] = file:/data/home/user/.m2/repository/org/mortbay/jetty/jetty-util/6.1.14/jetty-util-6.1.14.jar
[ERROR] urls[22] = file:/data/java/jdk1.7.0_45/jre/../lib/tools.jar
[ERROR] urls[23] = file:/data/home/user/.m2/repository/log4j/log4j/1.2.9/log4j-1.2.9.jar
[ERROR] urls[24] = file:/data/home/user/.m2/repository/net/sourceforge/cobertura/cobertura-runtime/2.0.3/cobertura-runtime-2.0.3.pom
[ERROR] urls[25] = file:/data/home/user/.m2/repository/urbanophile/java-getopt/1.0.9/java-getopt-1.0.9.jar
[ERROR] urls[26] = file:/data/home/user/.m2/repository/commons-cli/commons-cli/1.0/commons-cli-1.0.jar
[ERROR] urls[27] = file:/data/home/user/.m2/repository/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.jar
[ERROR] urls[28] = file:/data/home/user/.m2/repository/org/apache/maven/reporting/maven-reporting-api/2.0.8/maven-reporting-api-2.0.8.jar
[ERROR] urls[29] = file:/data/home/user/.m2/repository/org/apache/maven/doxia/doxia-sink-api/1.0-alpha-9/doxia-sink-api-1.0-alpha-9.jar
[ERROR] urls[30] = file:/data/home/user/.m2/repository/org/apache/maven/reporting/maven-reporting-impl/2.0.4.2/maven-reporting-impl-2.0.4.2.jar
[ERROR] urls[31] = file:/data/home/user/.m2/repository/commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.jar
[ERROR] urls[32] = file:/data/home/user/.m2/repository/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar
[ERROR] urls[33] = file:/data/home/user/.m2/repository/commons-digester/commons-digester/1.6/commons-digester-1.6.jar
[ERROR] urls[34] = file:/data/home/user/.m2/repository/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar
[ERROR] urls[35] = file:/data/home/user/.m2/repository/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar
[ERROR] urls[36] = file:/data/home/user/.m2/repository/org/apache/maven/doxia/doxia-core/1.0/doxia-core-1.0.jar
[ERROR] urls[37] = file:/data/home/user/.m2/repository/org/apache/maven/doxia/doxia-site-renderer/1.0/doxia-site-renderer-1.0.jar
[ERROR] urls[38] = file:/data/home/user/.m2/repository/org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.jar
[ERROR] urls[39] = file:/data/home/user/.m2/repository/org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.jar
[ERROR] urls[40] = file:/data/home/user/.m2/repository/org/apache/velocity/velocity/1.5/velocity-1.5.jar
[ERROR] urls[41] = file:/data/home/user/.m2/repository/org/apache/maven/doxia/doxia-decoration-model/1.0/doxia-decoration-model-1.0.jar
[ERROR] urls[42] = file:/data/home/user/.m2/repository/commons-collections/commons-collections/3.2/commons-collections-3.2.jar
[ERROR] urls[43] = file:/data/home/user/.m2/repository/org/apache/maven/doxia/doxia-module-apt/1.0/doxia-module-apt-1.0.jar
[ERROR] urls[44] = file:/data/home/user/.m2/repository/org/apache/maven/doxia/doxia-module-fml/1.0/doxia-module-fml-1.0.jar
[ERROR] urls[45] = file:/data/home/user/.m2/repository/org/apache/maven/doxia/doxia-module-xdoc/1.0/doxia-module-xdoc-1.0.jar
[ERROR] urls[46] = file:/data/home/user/.m2/repository/org/apache/maven/doxia/doxia-module-xhtml/1.0/doxia-module-xhtml-1.0.jar
[ERROR] urls[47] = file:/data/home/user/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar
[ERROR] urls[48] = file:/data/home/user/.m2/repository/org/codehaus/plexus/plexus-utils/2.0.2/plexus-utils-2.0.2.jar
[ERROR] urls[49] = file:/data/home/user/.m2/repository/org/apache/maven/shared/maven-invoker/2.0.11/maven-invoker-2.0.11.jar
[ERROR] Number of foreign imports: 1
[ERROR] import: Entry[import  from realm ClassRealm[maven.api, parent: null]]
[ERROR] 
[ERROR] -----------------------------------------------------: net.sourceforge.cobertura.util.CommandLineBuilder
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginContainerException
Build step 'Invoke top-level Maven targets' marked build as failure
Skipping Cobertura coverage report as build was not UNSTABLE or better ...
Finished: FAILURE  


I have already cleared my local repository and tried running it again, but no luck.

Any other suggestions?

I am using Maven 3.1.0 and Java 1.7.0_45

UPDATE: I am using Nexus as a repo manager. Looking in the logs I see:

[INFO] Failed to parse Maven artifact /data/home/user/sonatype-work/nexus/storage/central/net/sourceforge/cobertura/cobertura/2.0.3/cobertura-2.0.3.jar due to invalid CEN header (bad signature)

This seems to suggest that this jar is corrupt. But I keep trying to redownload it from Maven Central. Still stuck.

arnieSamich
  • 41
  • 1
  • 1
  • 7
  • There must be more error messages on top of your trace. Can you take alook and add it? – Jens Aug 21 '14 at 18:17
  • 1
    Could you verify if `file:/data/home/user/.m2/repository/org/codehaus/mojo/cobertura-maven-plugin/2.6/cobertura-maven-plugin-2.6.jar` can be opened. There's a tiny chance this file is corrupt. Also entry 24 surprises me: it refers to a pom... – Robert Scholte Aug 21 '14 at 18:48
  • @Jens that is the only error message in the trace. The rest is just INFO – arnieSamich Aug 21 '14 at 19:30
  • @RobertScholte I was able to open the jar. Entry 24 is odd, but the [pom.xml](http://svn.codehaus.org/mojo/tags/cobertura-maven-plugin-2.6/pom.xml) for cobertura-maven-plugin-2.6 shows that the dependency is indeed the pom file. – arnieSamich Aug 21 '14 at 19:36
  • Most important line is `A required class was missing while executing org.codehaus.mojo:cobertura-maven-plugin:2.6:instrument: net/sourceforge/cobertura/util/CommandLineBuilder`. It's probably not the CommandLineBuilder itself, but one the classes which is used by `CommandLineBuilder`. Could you try this with Maven-3.0.5? – Robert Scholte Aug 21 '14 at 20:49
  • @RobertScholte I still get the same error when using Maven-3.0.5 I have even tried to use a previous version of Cobertura (2.5.2) by changing the version in my pom.xml, but it still uses 2.6. Why is that? – arnieSamich Aug 22 '14 at 15:55
  • If you call it like `cobertura:cobertura`, the plugin must be placed under `` – Robert Scholte Aug 22 '14 at 16:20
  • @RobertScholte I forgot to mention that I'm using Nexus as a repository manager. When I took that out of the equation and just hit Maven Central directly (after clearing my local repo), everything worked fine. So the issue is something is corrupted in my Nexus repository. – arnieSamich Aug 22 '14 at 18:04

6 Answers6

3

I was also facing this issue and the issue was with Java version in Maven. It may happen you have multiple JDK version in system or your Maven referring to some other JDK version.

So first you can check the maven and referring version by typing below command in your maven project directory.

mvn -v

ITSs-MacBook-Pro:workbench vshah$ mvn -v Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) Maven home: /usr/local/Cellar/maven/3.6.3_1/libexec Java version: 1.8.0_241, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk/Contents/Home/jre Default locale: en_GB, platform encoding: UTF-8 OS name: "mac os x", version: "10.14.3", arch: "x86_64", family: "mac"

And check the maven and JDK version. If you found maven's JDK version not referring to required JDK version then you need to check your JAVA_HOME path. If you set JAVA_HOME path correctly it will work for sure.

vshah1
  • 57
  • 1
  • 11
  • 1
    That was my problem. The project needs Java 8 but my default was Java 11. When I changed the project-level JDK to 11 (from Project Structure) it worked fine. – Ahmed Moawad Aug 15 '21 at 19:15
1

Use this:-

<plugin>
   <groupId>org.codehaus.mojo</groupId>
   <artifactId>cobertura-maven-plugin</artifactId>
   <version>2.7</version>
   <configuration>
       <formats>
           <format>html</format>
           <format>xml</format>
       </formats>
       <reportSets>
           <reportSet>
               <reports>
                   <report>cobertura</report>
               </reports>
           </reportSet>
       </reportSets>
   </configuration>     
</plugin>
ojus kulkarni
  • 1,877
  • 3
  • 25
  • 41
0

Please check your path variable. You might be pointing it to jre bin path, it should point to jdk bin. I had the same issue, i did the above solution it worked for me.

Raghu
  • 450
  • 1
  • 5
  • 15
0

Try out downloading from external site and place it in your local repository.

  • Welcome to StackOverflow! Please provide a code or references to back up your answer. We have guidelines on [How to write a good answer](https://stackoverflow.com/help/how-to-answer). – Joseph Cho Nov 16 '18 at 18:26
  • As stated above please provide content to your answer instead of a one line statement – Nico Nov 16 '18 at 18:34
0

If you guys are using jenkins and facing issue while executing Descriptive jobs then check the configuration as well,

if you have selected Auto install option for maven and Java in "Global Tool configuration" then unclick it and add the directory manually where your maven and java is installed on jenkins server.

-3

Most important line is A required class was missing while executing org.codehaus.mojo:cobertura-maven-plugin:2.6:instrument: net/sourceforge/cobertura/util/CommandLineBuilder. Verify if the jar containing this class (i.e file:/data/home/user/.m2/repository/net/sourceforge/cobertura/cobertura/2.0.3/cobertura-2.0.3.jar) is corrupted. Is so, remove it from your local repository. If you're using a Repository Manager as well, verify it that one is corrupt as well and needs to be removed. Next give it another try.

Robert Scholte
  • 11,889
  • 2
  • 35
  • 44
  • Turns out to be a checksum validation failure for cobertura-2.0.3.jar Works fine if I bypass my Repo Manager (Nexus) and download directly from Maven Central. The error occurs when I download via the Maven Central proxy I set up in Nexus. Nexus is computing the wrong checksum and corrupting the jar. Is this an error on Nexus' part or a Nexus config error on my part? – arnieSamich Aug 25 '14 at 19:35