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

Blue Ocean Pipeline creation fails with class not found exception

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Critical Critical
    • git-client-plugin
    • MacOs 10.15.5
      Docker 19.03.8
      Jenkins Image: Jenkins/Jenkins:latest
      Blue Ocean: 1.23.2
      Jenkins: 2.241
    • git client plugin 3.3.1

      when I create pipeline via Blue Ocean on 3rd step,

      I got this error in jenkins log

       

      Error while serving [http://localhost:4400/blue/rest/organizations/jenkins/pipelines/] 
      java.lang.ClassNotFoundException: org.eclipse.jgit.transport.JschConfigSessionFactory 
      at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1387) 
      at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1342) 
      at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1089) 
      at java.lang.ClassLoader.loadClass(ClassLoader.java:352) 
      Caused: java.lang.NoClassDefFoundError: org/eclipse/jgit/transport/JschConfigSessionFactory 
      at java.lang.ClassLoader.defineClass1(Native Method) 
      at java.lang.ClassLoader.defineClass(ClassLoader.java:757) 
      at jenkins.util.AntClassLoader.defineClassFromData(AntClassLoader.java:1155) 
      at hudson.ClassicPluginStrategy$AntClassLoader2.defineClassFromData(ClassicPluginStrategy.java:715) 
      at jenkins.util.AntClassLoader.getClassFromStream(AntClassLoader.java:1326) 
      at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1377) 
      at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1342) 
      at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1089) 
      at java.lang.ClassLoader.loadClass(ClassLoader.java:352) 
      at io.jenkins.blueocean.blueocean_git_pipeline.GitPipelineCreateRequest.validate(GitPipelineCreateRequest.java:55) 
      at io.jenkins.blueocean.scm.api.AbstractMultiBranchCreateRequest.validateInternal(AbstractMultiBranchCreateRequest.java:250) 
      at io.jenkins.blueocean.scm.api.AbstractMultiBranchCreateRequest.create(AbstractMultiBranchCreateRequest.java:74) 
      at io.jenkins.blueocean.rest.model.BluePipelineContainer.create(BluePipelineContainer.java:54) 
      at io.jenkins.blueocean.rest.model.BluePipelineContainer.create(BluePipelineContainer.java:50) 
      at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) 
      at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396) 
      Caused: java.lang.reflect.InvocationTargetException 
      at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:400) 
      at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408) 
      at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212) 
      at org.kohsuke.stapler.SelectionInterceptedFunction$Adapter.invoke(SelectionInterceptedFunction.java:36) 
      at org.kohsuke.stapler.verb.HttpVerbInterceptor.invoke(HttpVerbInterceptor.java:48) 
      at org.kohsuke.stapler.SelectionInterceptedFunction.bindAndInvoke(SelectionInterceptedFunction.java:26) 
      at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145) 
      at org.kohsuke.stapler.IndexDispatcher.dispatch(IndexDispatcher.java:27) 
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:747) 
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:878) 
      at org.kohsuke.stapler.MetaClass$2.doDispatch(MetaClass.java:219) 
      at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) 
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:747) 
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:878) 
      at org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:456) 
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:747) 
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:878) 
      at org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:456) 
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:747) 
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:878) 
      at org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:456) 
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:747) 
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:878) 
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:717) 
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:878) 
      at org.kohsuke.stapler.MetaClass$9.dispatch(MetaClass.java:456) 
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:747) 
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:878) 
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:676) 
      at org.kohsuke.stapler.Stapler.service(Stapler.java:238) 
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
      at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:755) 
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1617) 
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:154) 
      at org.jenkinsci.plugins.ssegateway.Endpoint$SSEListenChannelFilter.doFilter(Endpoint.java:248) 
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) 
      at jenkins.security.ResourceDomainFilter.doFilter(ResourceDomainFilter.java:76) 
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) 
      at jenkins.telemetry.impl.UserLanguages$AcceptLanguageFilter.doFilter(UserLanguages.java:129) 
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) 
      at io.jenkins.blueocean.ResourceCacheControl.doFilter(ResourceCacheControl.java:134) 
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) 
      at io.jenkins.blueocean.auth.jwt.impl.JwtAuthenticationFilter.doFilter(JwtAuthenticationFilter.java:61) 
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:151) 
      at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:157) 
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) 
      at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:153) 
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) 
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) 
      at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) 
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
      at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) 
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
      at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) 
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
      at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) 
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
      at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) 
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
      at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93) 
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
      at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249) 
      at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67) 
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
      at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:90) 
      at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171) 
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) 
      at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49) 
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) 
      at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:82) 
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) 
      at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30) 
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) 
      at jenkins.security.SuspiciousRequestFilter.doFilter(SuspiciousRequestFilter.java:36) 
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) 
      at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:545) 
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) 
      at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:566) 
      at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) 
      at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) 
      at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1610) 
      at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) 
      at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1300) 
      at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) 
      at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485) 
      at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1580) 
      at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) 
      at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1215) 
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 
      at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) 
      at org.eclipse.jetty.server.Server.handle(Server.java:500) 
      at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383) 
      at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:547) 
      at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375) 
      at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273) 
      at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) 
      at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) 
      at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) 
      at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) 
      at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) 
      at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) 
      at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) 
      at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375) 
      at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806) 
      at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938) 
      at java.lang.Thread.run(Thread.java:748)
      

        1. blueocean-events.jpi
          23 kB
        2. git-client.jpi
          3.22 MB
        3. git-client-version.png
          git-client-version.png
          58 kB
        4. jenkins.value
          29 kB

          [JENKINS-62767] Blue Ocean Pipeline creation fails with class not found exception

          Jesse Glick added a comment -

          Never mind, I think this is a straightforward regression in git-client. See this change.

          Jesse Glick added a comment - Never mind, I think this is a straightforward regression in git-client . See this change .

          Jesse Glick added a comment -

          git bisect on

          echo 'System.out.println(org.eclipse.jgit.transport.JschConfigSessionFactory.class)' | mvn com.github.johnpoth:jshell-maven-plugin:1.3:run
          

          confirms that https://github.com/jenkinsci/git-client-plugin/pull/561 was the cause.

          Jesse Glick added a comment - git bisect on echo 'System.out.println(org.eclipse.jgit.transport.JschConfigSessionFactory.class)' | mvn com.github.johnpoth:jshell-maven-plugin:1.3:run confirms that https://github.com/jenkinsci/git-client-plugin/pull/561 was the cause.

          Jesse Glick added a comment -

          Thus rolling git-client from 3.3.0 back to 3.2.1 should suffice as a workaround.

          Jesse Glick added a comment - Thus rolling git-client from 3.3.0 back to 3.2.1 should suffice as a workaround.

          Mark Waite added a comment - - edited

          Special thanks to jglick for finding and fixing the issue.

          haasya and wayne_john and realflash could you test drive the git-client.jpi attached to the issue? I'm running it in my environment now with the hopes that one of you will be able to confirm it fixes the problem for you as well.

          Alternately, if it is easier for you to check, you could revert back to git client plugin 3.2.1. That isn't as complete a test as I would like, but it would be a nice confirmation that the critical difference is the packaging mistake I made during the upgrade from JGit 5.7 to JGit 5.8.

          Mark Waite added a comment - - edited Special thanks to jglick for finding and fixing the issue. haasya and wayne_john and realflash could you test drive the git-client.jpi attached to the issue? I'm running it in my environment now with the hopes that one of you will be able to confirm it fixes the problem for you as well. Alternately, if it is easier for you to check, you could revert back to git client plugin 3.2.1. That isn't as complete a test as I would like, but it would be a nice confirmation that the critical difference is the packaging mistake I made during the upgrade from JGit 5.7 to JGit 5.8.

          Hi Mark, Jesse,

          I am running Jenkins version 2.235.1. I installed the new git-client.jpi, and I am not seeing the issue anymore.

          Here is the plugin version: 3.3.1-SNAPSHOT (private-5e6d359b-mwaite)

          I also tested with git-client 3.2.1 version, and that seems to be work fine too.

          Deepika Gautam added a comment - Hi Mark, Jesse, I am running Jenkins version 2.235.1 . I installed the new git-client.jpi, and I am not seeing the issue anymore. Here is the plugin version: 3.3.1-SNAPSHOT (private-5e6d359b-mwaite) I also tested with git-client 3.2.1 version, and that seems to be work fine too.

          Mark Waite added a comment -

          Thanks very much dgautam!

          Mark Waite added a comment - Thanks very much dgautam !

          Mark Waite added a comment -

          Fix released as git client plugin 3.3.1

          Mark Waite added a comment - Fix released as git client plugin 3.3.1

          Yannick Haas added a comment - - edited

          Just updated to 3.3.1 and can confirm it works.

           

          Thank you for the fast fix!

          Yannick Haas added a comment - - edited Just updated to 3.3.1 and can confirm it works.   Thank you for the fast fix!

          Mark Waite added a comment -

          Thanks for your help trying to isolate the problem haasya!

          Mark Waite added a comment - Thanks for your help trying to isolate the problem haasya !

          John O added a comment -

          Also did an update of the plugin and successfully created a new pipeline from plain git with SSH.

          John O added a comment - Also did an update of the plugin and successfully created a new pipeline from plain git with SSH.

            jglick Jesse Glick
            wayne_john Wayne John
            Votes:
            6 Vote for this issue
            Watchers:
            14 Start watching this issue

              Created:
              Updated:
              Resolved: