JDOM NoClassDefFoundError running Jenkins plugin

41 views
Skip to first unread message

Stéphane Bruckert

unread,
Mar 1, 2013, 3:57:01 AM3/1/13
to jenkin...@googlegroups.com
I'm writing a Jenkins plugin which uses one of my own jar which uses JDOM. So in my POM, I've got 2 dependencies:
 - My own JAR which uses JDOM
 - JDOM

It builds successfully (mvn clean install) but during the run, I meet this error: org.jdom.JDOMException: java.lang.NoClassDefFoundError: org/jdom/Parent.

Asked here, here and here without solution.

The JDOM jar is indeed present in the HPI at: WEB-INF\lib\jdom-1.0.jar. I've also tried to run Jenkins with Tomcat. And, I tried to configure JDOM as mask classes in my POM:

    <build>
      <plugins>
        <plugin>
          <groupId>org.jenkins-ci.tools</groupId>
          <artifactId>maven-hpi-plugin</artifactId>
          <version>1.94</version>
          <configuration>
            <maskClasses>org.jdom.</maskClasses> <!-- HERE -->
            <pluginFirstClassLoader>true</pluginFirstClassLoader>
          </configuration>
        </plugin>
      </plugins>
    </build>

Without success.

The pom.xml of my plugin

      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>org.jenkins-ci.plugins</groupId>
        <artifactId>plugin</artifactId>
        <version>1.500</version><!-- which version of Jenkins is this plugin built against? -->
      </parent>
    
      <groupId>***</groupId>
      <artifactId>***</artifactId>
      <version>1.0</version>
      <packaging>hpi</packaging>
    
      <!-- get every artifact through repo.jenkins-ci.org, which proxies all the artifacts that we need -->
      <repositories>
        <repository>
          <id>repo.jenkins-ci.org</id>
          <url>http://repo.jenkins-ci.org/public/</url>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>repo.jenkins-ci.org</id>
          <url>http://repo.jenkins-ci.org/public/</url>
        </pluginRepository>
      </pluginRepositories>
      <dependencies>
    <dependency>
     <groupId>com.***</groupId>
     <artifactId>***</artifactId>
     <version>12.2.01</version>
    </dependency>
    <dependency>
    <groupId>jdom</groupId>
    <artifactId>jdom</artifactId>
    <version>1.0</version>
    </dependency>
      </dependencies>
    </project>

mvn dependency:analyze

    [WARNING] Used undeclared dependencies found:
    [WARNING]    org.mortbay.jetty:servlet-api:jar:2.5-20081211:test
    [WARNING]    commons-lang:commons-lang:jar:2.6:provided
    [WARNING]    org.kohsuke.stapler:json-lib:jar:2.1-rev7:provided
    [WARNING]    commons-io:commons-io:jar:1.4:provided
    [WARNING]    org.jvnet.hudson.dom4j:dom4j:jar:1.6.1-hudson-3:provided
    [WARNING]    org.kohsuke.stapler:stapler:jar:1.199:provided
    [WARNING] Unused declared dependencies found:
    [WARNING]    jdom:jdom:jar:1.0:compile
    [WARNING]    org.jenkins-ci.main:jenkins-war:war:1.500:test
    [WARNING]    org.jenkins-ci.main:ui-samples-plugin:jar:1.500:test
    [WARNING]    javax.servlet:servlet-api:jar:2.4:provided
    [WARNING]    org.codehaus.mojo:animal-sniffer-annotations:jar:1.9:provided
    [WARNING]    junit:junit:jar:3.8:test


StackTrace

    org.jdom.JDOMException: java.lang.NoClassDefFoundError: org/jdom/Parent: org/jdom/Parent
            at org.jdom.xpath.XPath.newInstance(XPath.java:139)
            at com.***.util.IOFile.scriptBlock(IOFile.java:449)
            at com.***.util.IOFile.scriptBlock(IOFile.java:502)
            at com.***.util.IOFile.createFileFromTemplate(IOFile.java:211)
            at com.***.util.IOFile.createFileFromTemplate(IOFile.java:176)
            at com.***.delivery.task.BuildFromTemplates.execute(BuildFromTemplates.java:89)
            at com.***.delivery.DeliveryThread.integrateSuite(DeliveryThread.java:1586)
            at com.***.delivery.DeliveryThread.run(DeliveryThread.java:363)
            at com.***.pmj.DeliveryBuilder.perform(DeliveryBuilder.java:303)
            at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
            at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:814)
            at hudson.model.Build$BuildExecution.build(Build.java:199)
            at hudson.model.Build$BuildExecution.doRun(Build.java:160)
            at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:593)
            at hudson.model.Run.execute(Run.java:1568)
            at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
            at hudson.model.ResourceController.execute(ResourceController.java:88)
            at hudson.model.Executor.run(Executor.java:237)
    Caused by: java.lang.NoClassDefFoundError: org/jdom/Parent
            at org.jaxen.jdom.JDOMXPath.<init>(JDOMXPath.java:91)
            at org.jdom.xpath.JaxenXPath.setXPath(JaxenXPath.java:281)
            at org.jdom.xpath.JaxenXPath.<init>(JaxenXPath.java:99)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
            at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
            at java.lang.reflect.Constructor.newInstance(Unknown Source)
            at org.jdom.xpath.XPath.newInstance(XPath.java:129)
            ... 17 more
    Caused by: java.lang.ClassNotFoundException: org.jdom.Parent
            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 java.lang.ClassLoader.loadClass(Unknown Source)
            at winstone.classLoader.WebappClassLoader.loadClass(WebappClassLoader.java:83)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            ... 25 more
    Caused by: java.lang.NoClassDefFoundError: org/jdom/Parent
            at org.jaxen.jdom.JDOMXPath.<init>(JDOMXPath.java:91)
            at org.jdom.xpath.JaxenXPath.setXPath(JaxenXPath.java:281)
            at org.jdom.xpath.JaxenXPath.<init>(JaxenXPath.java:99)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
            at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
            at java.lang.reflect.Constructor.newInstance(Unknown Source)
            at org.jdom.xpath.XPath.newInstance(XPath.java:129)
            at com.***.util.IOFile.scriptBlock(IOFile.java:449)
            at com.***.util.IOFile.scriptBlock(IOFile.java:502)
            at com.***.util.IOFile.createFileFromTemplate(IOFile.java:211)
            at com.***.util.IOFile.createFileFromTemplate(IOFile.java:176)
            at com.***.delivery.task.BuildFromTemplates.execute(BuildFromTemplates.java:89)
            at com.***.delivery.DeliveryThread.integrateSuite(DeliveryThread.java:1586)
            at com.***.delivery.DeliveryThread.run(DeliveryThread.java:363)
            at com.***.pmj.DeliveryBuilder.perform(DeliveryBuilder.java:303)
            at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
            at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:814)
            at hudson.model.Build$BuildExecution.build(Build.java:199)
            at hudson.model.Build$BuildExecution.doRun(Build.java:160)
            at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:593)
            at hudson.model.Run.execute(Run.java:1568)
            at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
            at hudson.model.ResourceController.execute(ResourceController.java:88)
            at hudson.model.Executor.run(Executor.java:237)
    Caused by: java.lang.ClassNotFoundException: org.jdom.Parent
            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 java.lang.ClassLoader.loadClass(Unknown Source)
            at winstone.classLoader.WebappClassLoader.loadClassmaven (WebappClassLoader.java:83)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            ... 25 more
    Caused by: java.lang.NoClassDefFoundError: org/jdom/Parent
            at org.jaxen.jdom.JDOMXPath.<init>(JDOMXPath.java:91)
            at org.jdom.xpath.JaxenXPath.setXPath(JaxenXPath.java:281)
            at org.jdom.xpath.JaxenXPath.<init>(JaxenXPath.java:99)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
            at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
            at java.lang.reflect.Constructor.newInstance(Unknown Source)
            at org.jdom.xpath.XPath.newInstance(XPath.java:129)
            at com.***.util.IOFile.scriptBlock(IOFile.java:449)
            at com.***.util.IOFile.scriptBlock(IOFile.java:502)
            at com.***.util.IOFile.createFileFromTemplate(IOFile.java:211)
            at com.***.util.IOFile.createFileFromTemplate(IOFile.java:176)
            at com.***.delivery.task.BuildFromTemplates.execute(BuildFromTemplates.java:89)
            at com.***.delivery.DeliveryThread.integrateSuite(DeliveryThread.java:1586)
            at com.***.delivery.DeliveryThread.run(DeliveryThread.java:363)
            at com.***.pmj.DeliveryBuilder.perform(DeliveryBuilder.java:303)
            at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
            at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:814)
            at hudson.model.Build$BuildExecution.build(Build.java:199)
            at hudson.model.Build$BuildExecution.doRun(Build.java:160)
            at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:593)
            at hudson.model.Run.execute(Run.java:1568)
            at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
            at hudson.model.ResourceController.execute(ResourceController.java:88)
            at hudson.model.Executor.run(Executor.java:237)
    Caused by: java.lang.ClassNotFoundException: org.jdom.Parent
            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 java.lang.ClassLoader.loadClass(Unknown Source)
            at winstone.classLoader.WebappClassLoader.loadClass(WebappClassLoader.java:83)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            ... 25 more

Please let me know in the comments if you need more information. Thank you!

Stéphane Bruckert

unread,
Mar 4, 2013, 12:03:53 PM3/4/13
to jenkin...@googlegroups.com
Surprisingly, adding the JDOM JAR jdom-1.0.jar into the Jenkins library folder~\.jenkins\war\WEB-INF\lib\ solved the problem!

How can we explain this?
Reply all
Reply to author
Forward
0 new messages