Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-27826

Getting java.lang.NoClassDefFoundError: hudson/matrix/MatrixRun error attempting to run a unit test

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Minor Minor
    • gradle-jpi-plugin
    • None
    • dependencies {
          classpath 'org.jenkins-ci.tools:gradle-jpi-plugin:0.10.2'
      }

      I get the following error when trying to run a unit test. Example code is below.

      I was able to get past this error by including dependancy testCompile 'org.jvnet.hudson.main:hudson-core:1.159' but that then said other classes where missing. This doesn't see the correct path to go down anyway.

      Error

       
      java.lang.NoClassDefFoundError: hudson/matrix/MatrixRun
      	at com.inedo.TriggerBuildStepTest.<init>(TriggerBuildStepTest.java:13)
      	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
      ...
      Caused by: java.lang.ClassNotFoundException: hudson.matrix.MatrixRun
      	at java.net.URLClassLoader$1.run(Unknown Source)
      	at java.net.URLClassLoader$1.run(Unknown Source)
      	at java.security.AccessController.doPrivileged(Native Method)
      	at java.net.URLClassLoader.findClass(Unknown Source)
      	at java.lang.ClassLoader.loadClass(Unknown Source)
      	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
      	at java.lang.ClassLoader.loadClass(Unknown Source)
      	... 23 more
      

      Code Example

      package test.example;
      
      import static org.junit.Assert.*;
      import org.jvnet.hudson.test.JenkinsRule;
      import org.apache.commons.io.FileUtils;
      import hudson.model.*;
      import hudson.tasks.Shell;
      import org.junit.Test;
      import org.junit.Rule;
      
      public class TriggerBuildStepTest {
        @Rule 
        public JenkinsRule j = new JenkinsRule();
        
        @Test 
        public void first() throws Exception {
      
          FreeStyleProject project = j.createFreeStyleProject();
          project.getBuildersList().add(new Shell("echo hello"));
          FreeStyleBuild build = project.scheduleBuild2(0).get();
          System.out.println(build.getDisplayName() + " completed");
          
          // TODO: change this to use HtmlUnit
          String s = FileUtils.readFileToString(build.getLogFile());
          assertTrue(s.contains("+ echo hello"));
        }
      }
      

            daspilker Daniel Spilker
            andrewsumner Andrew Sumner
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: