Jenkins Cobertura build - NoClassDefFoundError

I have a test class ProcessorTestwith lines

JSONObject jsonObj = XML.toJSONObject(convert);
DBOb = (DBObject) JSON.parse(jsonObj.toString());

The XML class is located in json.org . The class is used differently where in the code without problems.

Everything works fine on localhost (i.e. all Maven and JUnit tests run).

When I clicked on Jenkins, I get this error:

Jenkins Error

Error Details
net/sourceforge/cobertura/coveragedata/TouchCollector

Stack Trace
java.lang.NoClassDefFoundError: net/sourceforge/cobertura/coveragedata/TouchCollector
    at org.json.XML.__cobertura_init(XML.java)
    at org.json.XML.<clinit>(XML.java)
    at ProcessorTest.classSetup(ProcessorTest.java:81)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.mockito.internal.runners.JUnit45AndHigherRunnerImpl.run(JUnit45AndHigherRunnerImpl.java:37)
    at org.mockito.runners.MockitoJUnitRunner.run(MockitoJUnitRunner.java:62)
    at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
    at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: java.lang.ClassNotFoundException: net.sourceforge.cobertura.coveragedata.TouchCollector
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 26 more

I am using Jenkins 1.553 and the Cobertura 1.9.6 plugin.

How to fix it?

The structure of the project is as follows:

-- project1
     |
     | - core
     | - Tests (includes the tests that fail)


-- org.json
     |
     | - XML.class

When I click on Jenkins, I assume that the project is org.jsonnot available for tests.

+4
source share
3 answers

; - SLF4J + ch.qos.logback, ( .ant/lib - , ant). Cobertura ( , 2.1.1) ch.qos.logback SLF4J. SLF4J , :

java.lang.NoClassDefFoundError: net/sourceforge/cobertura/coveragedata/TouchCollector
    at [org.package.ClassName].__cobertura_init([ClassName].java)
    at [org.package.ClassName].<clinit>([ClassName].java)
    at [org.package.ClassName]Test.[method]([ClassName]Test.java:113)
Caused by: java.lang.ClassNotFoundException: net.sourceforge.cobertura.coveragedata.TouchCollector
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

slf4j-simple-1.7.14.jar .ant/lib, logback-core-1.0.13.jar logback-classic-1.0.13.jar. .

+1
0

Maven Jenkins, . , cobertura-maven-plugin pom.xml.

Cobertura library ( maven ) , Cobertura Jenkins. asm.jar . , jenkins.

, ( , org.json):

  • latest version of Jenkins 1.596in conjunction with Jenkins Cobertura-Plugin1.9.6
  • latest cobertura-maven-pluginmaven plugin for various projects in version2.6

My strong assumption: this is not about the material itself JSON, but about the environment of your installation; your version of Jenkins is a 1.553bit outdated. I would advise you to upgrade if possible with administrators / other projects.

0
source

Source: https://habr.com/ru/post/1568308/


All Articles