XDimension0x
XDimension0x

Reputation: 141

Jenkins-Spock test failed with NoClassDefFoundError

I installed jenkins-spock package in my Jenkins shared library project. When I attempt to run the test I created, I got the following error:

java.lang.NoClassDefFoundError: javax/servlet/ServletException
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
    at java.lang.Class.getDeclaredConstructors(Class.java:2020)
    at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:49)
    at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:36)
    at com.homeaway.devtools.jenkins.testing.JenkinsPipelineSpecification.setupSpec(JenkinsPipelineSpecification.groovy:1101)
Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletException
    at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    ... 5 more

Here is my build.gradle file contents:

plugins{ id 'groovy' id 'java' id 'idea' }

idea {
    module {
        downloadJavadoc = true
        downloadSources = true
    }
}

group 'org.jenkins.devopssec'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    maven { url 'https://repo1.maven.org/maven2/' }
    maven { url 'https://repo.jenkins-ci.org/releases/' }
    mavenLocal()
    mavenCentral()
}
sourceSets {
    main {
        groovy {
            srcDirs = ['src/main/groovy/vars', 'src/main/groovy/src']
        }
    }

    test {
        groovy {
            srcDirs = ['src/test/groovy/']
        }
    }
}

dependencies {
    implementation 'org.codehaus.groovy:groovy-all:2.4.12'
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2'
    implementation 'org.jenkins-ci.main:jenkins-core:2.168@jar'

    // Jenkins plugins
    implementation 'com.cloudbees:groovy-cps:1.31'
    implementation 'org.jenkins-ci.plugins:credentials:2.1.16'
    implementation 'org.jenkins-ci.plugins:credentials-binding:1.4@jar'
    implementation group: 'org.apache.maven', name: 'maven-model', version: '3.6.3'

    // Jenkins Spock dependencies
    implementation group: 'org.kohsuke.stapler', name: 'stapler', version: '1.257.2'
    compileOnly group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.0'
    implementation group: 'org.jenkins-ci.plugins.workflow', name: 'workflow-step-api', version:  '2.13'
    implementation group: 'org.jenkins-ci.plugins.workflow', name: 'workflow-cps', version: '2.41'
    implementation group: 'org.jenkins-ci', name: 'symbol-annotation', version: '1.10'

    testImplementation group: 'org.spockframework', name: 'spock-core', version: '1.2-groovy-2.4'
    implementation group: 'com.homeaway.devtools.jenkins', name: 'jenkins-spock', version: '2.1.4'

    implementation fileTree(dir: 'lib', include: ['*.jar'])
}

Any comment or suggestion is welcome. Thanks in advance !

Upvotes: 1

Views: 323

Answers (0)

Related Questions