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

NoClassDefFoundError on Base64 when launching an headless slave with -jnlpCredential option

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • core
    • Jenkins 1.411 / MacOS X / JDK 1.6.0_24
      Jenkins 1.412 / Master: Ubuntu 10.04, / Slave: Windows Server 2008 x64, JDK 1.6.0_20
      Jenkins 1.424.2 / Master: CentOS 5.5, / Slave: Windows Server 2008 R2 x64, JDK 1.6.0_21

      When launching a headless slave, a NoClassDefFoundError on org/apache/commons/codec/binary/Base64 is raised when specifying the -jnlpCredential option:

      $ java -jar slave.jar -jnlpUrl <url> -jnlpCredentials <user>:<password>
      Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/codec/binary/Base64
      at hudson.remoting.Launcher.parseJnlpArguments(Launcher.java:221)
      at hudson.remoting.Launcher.run(Launcher.java:192)
      at hudson.remoting.Launcher.main(Launcher.java:168)
      Caused by: java.lang.ClassNotFoundException: org.apache.commons.codec.binary.Base64
      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:307)
      at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
      ... 3 more

          [JENKINS-9679] NoClassDefFoundError on Base64 when launching an headless slave with -jnlpCredential option

          Sergej Kleva added a comment -

          If i put this way i get mentioned error above:
          -Xrs -jar "%BASE%\slave.jar" -jnlpUrl http://aaa.bbb.ccc:8080/computer/slave01/slave-agent.jnlp -jnlpCredentials xxx:yyy -noCertificateCheck

          If i put it this way i don't get errors and can successfully connect slaves:
          -Xrs -jar "%BASE%\slave.jar" -jnlpUrl http://aaa.bbb.ccc:8080/computer/slave01/slave-agent.jnlp -classpath "%BASE%\commons-codec-1.7.jar" -jnlpCredentials xxx:yyy -noCertificateCheck

          Sergej Kleva added a comment - If i put this way i get mentioned error above: -Xrs -jar "%BASE%\slave.jar" -jnlpUrl http://aaa.bbb.ccc:8080/computer/slave01/slave-agent.jnlp -jnlpCredentials xxx:yyy -noCertificateCheck If i put it this way i don't get errors and can successfully connect slaves: -Xrs -jar "%BASE%\slave.jar" -jnlpUrl http://aaa.bbb.ccc:8080/computer/slave01/slave-agent.jnlp -classpath "%BASE%\commons-codec-1.7.jar" -jnlpCredentials xxx:yyy -noCertificateCheck

          Jesse Glick added a comment -

          The authentication issue is unrelated: JENKINS-16273

          Jesse Glick added a comment - The authentication issue is unrelated: JENKINS-16273

          Jesse Glick added a comment -

          The issue was fixed in slave.jar 2.21, served from /jnlpJars/slave.jar, but the jenkins-slave.exe service wrapper continues to bundle 2.20.

          Jesse Glick added a comment - The issue was fixed in slave.jar 2.21, served from /jnlpJars/slave.jar , but the jenkins-slave.exe service wrapper continues to bundle 2.20.

          Jesse Glick added a comment -

          …or rather, launching the JNLP link seems to load from cache, and you have to manually delete e.g. C:\Documents and Settings\My Name\Local Settings\Application Data\Sun\Java\Deployment\cache and reload the JNLP to see the new 2.21 JAR. So it seems Jenkins is somehow not expiring old copies of the JAR properly, which ought to be fixed.

          Jesse Glick added a comment - …or rather, launching the JNLP link seems to load from cache, and you have to manually delete e.g. C:\Documents and Settings\My Name\Local Settings\Application Data\Sun\Java\Deployment\cache and reload the JNLP to see the new 2.21 JAR. So it seems Jenkins is somehow not expiring old copies of the JAR properly, which ought to be fixed.

          Jesse Glick added a comment -

          Reclosing; filed JENKINS-16490 to capture the cache issue, which is really independent.

          Jesse Glick added a comment - Reclosing; filed JENKINS-16490 to capture the cache issue, which is really independent.

          Code changed in jenkins
          User: Kohsuke Kawaguchi
          Path:
          changelog.html
          pom.xml
          http://jenkins-ci.org/commit/jenkins/7bc441d17c67d435c9b5e67dbca236abc124ff54
          Log:
          [FIXED JENKINS-9679] integrated remoting 2.21 that contains the fix.
          (cherry picked from commit 8a4bedd0df9b5d642945eb601ddb99bb75e87131)

          Conflicts:
          changelog.html
          pom.xml

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Kohsuke Kawaguchi Path: changelog.html pom.xml http://jenkins-ci.org/commit/jenkins/7bc441d17c67d435c9b5e67dbca236abc124ff54 Log: [FIXED JENKINS-9679] integrated remoting 2.21 that contains the fix. (cherry picked from commit 8a4bedd0df9b5d642945eb601ddb99bb75e87131) Conflicts: changelog.html pom.xml

          Would you please backport this LTS? I have to download commons-codec for every new node and adopt the classpath.
          Thanks in advance!

          Martin Scherer added a comment - Would you please backport this LTS? I have to download commons-codec for every new node and adopt the classpath. Thanks in advance!

          Jesse Glick added a comment -

          @marscher this was already backported to the stable branch (as 7bc441d); 1.480.3 has just not been released yet.

          Jesse Glick added a comment - @marscher this was already backported to the stable branch (as 7bc441d ); 1.480.3 has just not been released yet.

          Allan Chow added a comment -

          running on 1.481 and encountered this very issue?

          Allan Chow added a comment - running on 1.481 and encountered this very issue?

          Jesse Glick added a comment -

          @allan_chow this is not fixed in 1.481. You need to update to 1.480.3 or 1.499+.

          Jesse Glick added a comment - @allan_chow this is not fixed in 1.481. You need to update to 1.480.3 or 1.499+.

            jglick Jesse Glick
            mansion Olivier Mansion
            Votes:
            15 Vote for this issue
            Watchers:
            19 Start watching this issue

              Created:
              Updated:
              Resolved: