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

NoClassDefFoundError adding HTTPS URL for Git repository - fails

      Installed Jenkins on Windows Server 2008 R2, running as a service with it's own user account.

      R/W permissions to C:\Program Files (x86)\Jenkins
      R permissions for C:\Git

      Using IIS 7.5 application routing redirection to forward requests for https://jenkins.XXXXX.net:443 to internal Jenkins service.

      Redirection is working fine with Jenkins menu system and global setup working too.

      We use Atlassian Stash on the same server to manange the Git repository. This component is working fine.

      Access to the repository is done via a HTTPS link like this:
      https://stash.XXXXX.net/scm/xxx/main.git

      When I try to add a link to a Git repository in Jenkins I get an error with the following stack trace:

      javax.servlet.ServletException: java.lang.NoClassDefFoundError: org.jenkinsci.plugins.gitclient.GitClient
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:777)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:841)
      at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:248)
      at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:727)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:841)
      at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:248)
      at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:727)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:841)
      at org.kohsuke.stapler.Stapler.invoke(Stapler.java:630)
      at org.kohsuke.stapler.Stapler.service(Stapler.java:224)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
      at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
      at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96)
      at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      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:117)
      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 org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174)
      at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
      at jenkins.security.ApiTokenFilter.doFilter(ApiTokenFilter.java:64)
      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:76)
      at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
      at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
      at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
      at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
      at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
      at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
      at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
      at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
      at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
      at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
      at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
      at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
      at org.eclipse.jetty.server.Server.handle(Server.java:370)
      at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
      at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949)
      at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011)
      at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
      at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
      at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
      at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
      at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
      at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      at java.lang.Thread.run(Unknown Source)
      Caused by: java.lang.NoClassDefFoundError: org.jenkinsci.plugins.gitclient.GitClient
      at org.jenkinsci.plugins.gitclient.Git$1.invoke(Git.java:63)
      at org.jenkinsci.plugins.gitclient.Git$1.invoke(Git.java:54)
      at org.jenkinsci.plugins.gitclient.Git.getClient(Git.java:66)
      at hudson.plugins.git.UserRemoteConfig$DescriptorImpl.doCheckUrl(UserRemoteConfig.java:147)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:297)
      at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:160)
      at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:95)
      at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:120)
      at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
      at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:727)
      ... 67 more

          [JENKINS-20254] NoClassDefFoundError adding HTTPS URL for Git repository - fails

          Wojciech Luczkow added a comment - - edited

          I am also having problems connecting to git repository through https. Using wireshark I observed git-client is first sending hello using TLSv1 and after getting Server Hello it sends TLSv1 Certificate unknown.

          I used "git clone" command from main build step and it was working (I have _netrc with credentials). I noticed change in wireshark log: SSL protocol is used for client Hello and Different length server certificate is obtained.
          EDIT: version 1.1.2 of git plugin also sends TLSv1 Hello but does not send Certificate Unknown

          With git-client 1.1.2 I have used before connection to git server through https was working fine.

          I have created SSH certificate, added server key to known_hosts and set HOME variable.
          On Windows 7 32.

          Wojciech Luczkow added a comment - - edited I am also having problems connecting to git repository through https. Using wireshark I observed git-client is first sending hello using TLSv1 and after getting Server Hello it sends TLSv1 Certificate unknown. I used "git clone" command from main build step and it was working (I have _netrc with credentials). I noticed change in wireshark log: SSL protocol is used for client Hello and Different length server certificate is obtained. EDIT: version 1.1.2 of git plugin also sends TLSv1 Hello but does not send Certificate Unknown With git-client 1.1.2 I have used before connection to git server through https was working fine. I have created SSH certificate, added server key to known_hosts and set HOME variable. On Windows 7 32.

          NoClassDefFoundError: org.jenkinsci.plugins.gitclient.GitClient
          suggest there a failure in git-client plugin initialization. Please check log. Please also check you're running 1.4.5

          Nicolas De Loof added a comment - NoClassDefFoundError: org.jenkinsci.plugins.gitclient.GitClient suggest there a failure in git-client plugin initialization. Please check log. Please also check you're running 1.4.5

          Greg BOUGEARD added a comment -

          Not sure it's linked but I cannot clone github repos, I'm having the following stack in the build configuration :

          javax.servlet.ServletException: java.lang.IllegalArgumentException: Username may not be null
          at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:735)
          at org.kohsuke.stapler.Stapler.invoke(Stapler.java:799)
          at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:239)
          at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
          at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:685)
          at org.kohsuke.stapler.Stapler.invoke(Stapler.java:799)
          at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:239)
          at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
          at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:685)
          at org.kohsuke.stapler.Stapler.invoke(Stapler.java:799)
          at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:239)
          at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
          at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:685)
          at org.kohsuke.stapler.Stapler.invoke(Stapler.java:799)
          at org.kohsuke.stapler.Stapler.invoke(Stapler.java:587)
          at org.kohsuke.stapler.Stapler.service(Stapler.java:218)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
          at winstone.ServletConfiguration.execute(ServletConfiguration.java:248)
          at winstone.RequestDispatcher.forward(RequestDispatcher.java:333)
          at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:376)
          at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96)
          at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:58)
          at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
          at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:208)
          at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:181)
          at net.bull.javamelody.PluginMonitoringFilter.doFilter(PluginMonitoringFilter.java:86)
          at org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter.doFilter(HudsonMonitoringFilter.java:84)
          at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
          at hudson.plugins.audit_trail.AuditTrailFilter.doFilter(AuditTrailFilter.java:66)
          at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99)
          at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
          at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
          at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
          at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
          at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
          at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
          at org.jenkinsci.plugins.reverse_proxy_auth.ReverseProxySecurityRealm$1.doFilter(ReverseProxySecurityRealm.java:92)

          AFAIK credentials are not mandatory for cloning a repo through https, no?

          Greg BOUGEARD added a comment - Not sure it's linked but I cannot clone github repos, I'm having the following stack in the build configuration : javax.servlet.ServletException: java.lang.IllegalArgumentException: Username may not be null at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:735) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:799) at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:239) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:685) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:799) at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:239) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:685) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:799) at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:239) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:685) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:799) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:587) at org.kohsuke.stapler.Stapler.service(Stapler.java:218) at javax.servlet.http.HttpServlet.service(HttpServlet.java:45) at winstone.ServletConfiguration.execute(ServletConfiguration.java:248) at winstone.RequestDispatcher.forward(RequestDispatcher.java:333) at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:376) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96) at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:58) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99) at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:208) at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:181) at net.bull.javamelody.PluginMonitoringFilter.doFilter(PluginMonitoringFilter.java:86) at org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter.doFilter(HudsonMonitoringFilter.java:84) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99) at hudson.plugins.audit_trail.AuditTrailFilter.doFilter(AuditTrailFilter.java:66) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:99) at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88) at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48) at winstone.FilterConfiguration.execute(FilterConfiguration.java:194) at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366) at org.jenkinsci.plugins.reverse_proxy_auth.ReverseProxySecurityRealm$1.doFilter(ReverseProxySecurityRealm.java:92) AFAIK credentials are not mandatory for cloning a repo through https, no?

          rsutphin added a comment -

          FWIW, I had a NoClassDefFoundException: [...] GitClient exception similar to the one in the ticket summary. It started happening right after I updated Jenkins to 1.537 (using apt) and GitClient to 1.4.5 (using the in-Jenkins plugin manager). (Unfortunately, I don't recall what the previous versions were.)

          The Jenkins log did not have any more information than the NoClassDefFoundException.

          Looking in the plugin manager, I found that, under the Installed tab, the entry for GitClient said "version 1.4.5" but also had a "downgrade to 1.4.5" button in the "previously installed version" column. I clicked on the downgrade button, waited for it to install, then restarted Jenkins. This fixed the problem for me.

          rsutphin added a comment - FWIW, I had a NoClassDefFoundException: [...] GitClient exception similar to the one in the ticket summary. It started happening right after I updated Jenkins to 1.537 (using apt) and GitClient to 1.4.5 (using the in-Jenkins plugin manager). (Unfortunately, I don't recall what the previous versions were.) The Jenkins log did not have any more information than the NoClassDefFoundException. Looking in the plugin manager, I found that, under the Installed tab, the entry for GitClient said "version 1.4.5" but also had a "downgrade to 1.4.5" button in the "previously installed version" column. I clicked on the downgrade button, waited for it to install, then restarted Jenkins. This fixed the problem for me.

          Hi!

          I've same issue, but using ssh protocol. Also there are similar reports:

          I'm using

          • Debian GNU/Linux 7
          • Oracle Java 1.7.0_25 (64 bit)
          • git version 1.7.10.4
          • Jenkins ver. 1.561
            • Credentials Plugin 1.10
            • GIT client plugin 1.8.0
            • GIT plugin 2.2.1

          This is the error I get:

          javax.servlet.ServletException: java.lang.NoClassDefFoundError: org.jenkinsci.plugins.gitclient.GitClient
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:778)
          ...
          	at java.lang.Thread.run(Thread.java:724)
          Caused by: java.lang.NoClassDefFoundError: org.jenkinsci.plugins.gitclient.GitClient
          	at org.jenkinsci.plugins.gitclient.Git$1.invoke(Git.java:63)
          	at org.jenkinsci.plugins.gitclient.Git$1.invoke(Git.java:54)
          	at org.jenkinsci.plugins.gitclient.Git.getClient(Git.java:66)
          	at hudson.plugins.git.UserRemoteConfig$DescriptorImpl.doCheckUrl(UserRemoteConfig.java:147)
          	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
          	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          	at java.lang.reflect.Method.invoke(Method.java:606)
          	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298)
          	at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
          	at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
          	at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:120)
          	at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
          	at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
          	... 57 more
          

          If I run git in my SSH session on the Jenkins server manually. it works:

          $ git clone my_jenkins_user@my_server:/my_path my_project
          Cloning into 'my_project'...
          ...
          

          Is there any chance, that this issue will be fixed?

          Michael Decker added a comment - Hi! I've same issue, but using ssh protocol. Also there are similar reports: JENKINS-21520 JENKINS-21745 I'm using Debian GNU/Linux 7 Oracle Java 1.7.0_25 (64 bit) git version 1.7.10.4 Jenkins ver. 1.561 Credentials Plugin 1.10 GIT client plugin 1.8.0 GIT plugin 2.2.1 This is the error I get: javax.servlet.ServletException: java.lang.NoClassDefFoundError: org.jenkinsci.plugins.gitclient.GitClient at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:778) ... at java.lang. Thread .run( Thread .java:724) Caused by: java.lang.NoClassDefFoundError: org.jenkinsci.plugins.gitclient.GitClient at org.jenkinsci.plugins.gitclient.Git$1.invoke(Git.java:63) at org.jenkinsci.plugins.gitclient.Git$1.invoke(Git.java:54) at org.jenkinsci.plugins.gitclient.Git.getClient(Git.java:66) at hudson.plugins.git.UserRemoteConfig$DescriptorImpl.doCheckUrl(UserRemoteConfig.java:147) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298) at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161) at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96) at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:120) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728) ... 57 more If I run git in my SSH session on the Jenkins server manually. it works: $ git clone my_jenkins_user@my_server:/my_path my_project Cloning into 'my_project' ... ... Is there any chance, that this issue will be fixed?

          Hi!

          I was able to fix this issue by enable the installed, but disabled plugin "SSH Credentials Plugin".

          So far it's logical. This project has a dependency to "SSH Credentials Plugin". But if "SSH Credentials Plugin" is not enabled, Java is not able to load the class "GitClient", as this class imports the class "com.cloudbees.jenkins.plugins.sshcredentials.SSHUserPrivateKey". The exception is not helpful, as a normal Jenkins user has no chance to see, that there is a dependency issue.

          Michael Decker added a comment - Hi! I was able to fix this issue by enable the installed, but disabled plugin "SSH Credentials Plugin". So far it's logical. This project has a dependency to "SSH Credentials Plugin". But if "SSH Credentials Plugin" is not enabled, Java is not able to load the class "GitClient", as this class imports the class "com.cloudbees.jenkins.plugins.sshcredentials.SSHUserPrivateKey". The exception is not helpful, as a normal Jenkins user has no chance to see, that there is a dependency issue.

          Mark Waite added a comment -

          In this example, it appears the user needs to enable the ssh-credentials plugin so that the git client plugin can perform its work. The git client plugin needs the authentication facilities of the ssh credentials plugin (and likely the credentials plugin).

          Mark Waite added a comment - In this example, it appears the user needs to enable the ssh-credentials plugin so that the git client plugin can perform its work. The git client plugin needs the authentication facilities of the ssh credentials plugin (and likely the credentials plugin).

            ndeloof Nicolas De Loof
            gcparris Gareth Parris
            Votes:
            4 Vote for this issue
            Watchers:
            12 Start watching this issue

              Created:
              Updated:
              Resolved: