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

NoSuchFieldError: 'SNAKE_CASE' with jackson2-api 2.20.0 and gitlab-api plugin

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: Minor Minor
    • jackson2-api-plugin
    • Jenkins 2.479.3
      Ubuntu 24.04.1 LTS

      After updating the jackson2-api plugin, our Jenkins builds using the gitlab-branch-source plugin failed with a java.lang.NoSuchFieldError. The error indicates a missing field (SNAKE_CASE) in the com.fasterxml.jackson.databind.PropertyNamingStrategy class.

      This suggests a breaking change or a version incompatibility between the latest jackson2-api plugin and the gitlab-api plugin it relies on. Downgrading the jackson2-api plugin to a previous version resolved the issue.

       

      Steps to Reproduce:
      1. Install Jenkins 2.479.3 on an Ubuntu 24.04.1 LTS server.

      2. Install the following plugins:

            - gitlab-branch-source: 718.v40b_5f0e67cd3

            - gitlab-api: 5.6.0-100.v83f8f4b_f1129

            - jersey2-api: 2.47-165.ve7809a_3e87e0

            - jackson2-api: 2.20.0-411.v6ef8fdee4fe9

      3. Configure a multibranch pipeline job that uses GitLab as its SCM source.

      4. Run the build. The build will fail with the error message below.

          The build fails with the following stack trace

       MultiException stack 1 of 2
      java.lang.NoSuchFieldError: Class com.fasterxml.jackson.databind.PropertyNamingStrategy does not have member field 'com.fasterxml.jackson.databind.PropertyNamingStrategy SNAKE_CASE'
      	at PluginClassLoader for gitlab-api//org.gitlab4j.api.utils.JacksonJson.<init>(JacksonJson.java:62)
      	at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
      	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502)
      	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486)
      	at PluginClassLoader for jersey2-api//org.glassfish.hk2.utilities.reflection.ReflectionHelper.makeMe(ReflectionHelper.java:1356)
      	at PluginClassLoader for jersey2-api//org.jvnet.hk2.internal.ClazzCreator.createMe(ClazzCreator.java:248)
      	at PluginClassLoader for jersey2-api//org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:342)
      	at PluginClassLoader for jersey2-api//org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:463)
      	at PluginClassLoader for jersey2-api//org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:59)
      	at PluginClassLoader for jersey2-api//org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:47)
      	at PluginClassLoader for jersey2-api//org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture$1.call(Cache.java:74)
      	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
      	at PluginClassLoader for jersey2-api//org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture.run(Cache.java:131)
      	at PluginClassLoader for jersey2-api//org.glassfish.hk2.utilities.cache.Cache.compute(Cache.java:176)
      	at PluginClassLoader for jersey2-api//org.jvnet.hk2.internal.SingletonContext.findOrCreate(SingletonContext.java:98)
      	at PluginClassLoader for jersey2-api//org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2102)
      	at PluginClassLoader for jersey2-api//org.jvnet.hk2.internal.ServiceLocatorImpl.internalGetAllServiceHandles(ServiceLocatorImpl.java:1481)
      	at PluginClassLoader for jersey2-api//org.jvnet.hk2.internal.ServiceLocatorImpl.getAllServices(ServiceLocatorImpl.java:799)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.inject.hk2.AbstractHk2InjectionManager.getAllInstances(AbstractHk2InjectionManager.java:171)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.inject.hk2.ImmediateHk2InjectionManager.getAllInstances(ImmediateHk2InjectionManager.java:30)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.internal.ContextResolverFactory$ContextResolversConfigurator.postInit(ContextResolverFactory.java:69)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.client.ClientConfig$State.lambda$initRuntime$2(ClientConfig.java:463)
      	at java.base/java.util.Arrays$ArrayList.forEach(Arrays.java:4305)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.client.ClientConfig$State.initRuntime(ClientConfig.java:463)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.internal.util.collection.Values$LazyValueImpl.get(Values.java:317)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.client.ClientConfig.getRuntime(ClientConfig.java:829)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.client.ClientRequest.getClientRuntime(ClientRequest.java:183)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.client.JerseyWebTarget.onBuilder(JerseyWebTarget.java:371)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.client.JerseyWebTarget.request(JerseyWebTarget.java:199)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.client.JerseyWebTarget.request(JerseyWebTarget.java:38)
      	at PluginClassLoader for gitlab-api//org.gitlab4j.api.GitLabApiClient.invocation(GitLabApiClient.java:842)
      	at PluginClassLoader for gitlab-api//org.gitlab4j.api.GitLabApiClient.invocation(GitLabApiClient.java:806)
      	at PluginClassLoader for gitlab-api//org.gitlab4j.api.GitLabApiClient.get(GitLabApiClient.java:417)
      	at PluginClassLoader for gitlab-api//org.gitlab4j.api.GitLabApiClient.get(GitLabApiClient.java:405)
      	at PluginClassLoader for gitlab-api//org.gitlab4j.api.AbstractApi.get(AbstractApi.java:258)
      	at PluginClassLoader for gitlab-api//org.gitlab4j.api.ProjectApi.getProject(ProjectApi.java:752)
      	at PluginClassLoader for gitlab-api//org.gitlab4j.api.ProjectApi.getProject(ProjectApi.java:684)
      	at PluginClassLoader for gitlab-branch-source//io.jenkins.plugins.gitlabbranchsource.GitLabSCMSource.getGitlabProject(GitLabSCMSource.java:214)
      	at PluginClassLoader for gitlab-branch-source//io.jenkins.plugins.gitlabbranchsource.GitLabSCMSource.retrieve(GitLabSCMSource.java:265)
      	at PluginClassLoader for scm-api//jenkins.scm.api.SCMSource.fetch(SCMSource.java:581)
      	at PluginClassLoader for workflow-multibranch//org.jenkinsci.plugins.workflow.multibranch.SCMBinder.create(SCMBinder.java:104)
      	at PluginClassLoader for workflow-job//org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:317)
      	at hudson.model.ResourceController.execute(ResourceController.java:101)
      	at hudson.model.Executor.run(Executor.java:445)
      MultiException stack 2 of 2
      java.lang.IllegalStateException: Unable to perform operation: create on org.gitlab4j.api.utils.JacksonJson
      	at PluginClassLoader for jersey2-api//org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:369)
      	at PluginClassLoader for jersey2-api//org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:463)
      	at PluginClassLoader for jersey2-api//org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:59)
      	at PluginClassLoader for jersey2-api//org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:47)
      	at PluginClassLoader for jersey2-api//org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture$1.call(Cache.java:74)
      	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
      	at PluginClassLoader for jersey2-api//org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture.run(Cache.java:131)
      	at PluginClassLoader for jersey2-api//org.glassfish.hk2.utilities.cache.Cache.compute(Cache.java:176)
      	at PluginClassLoader for jersey2-api//org.jvnet.hk2.internal.SingletonContext.findOrCreate(SingletonContext.java:98)
      	at PluginClassLoader for jersey2-api//org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2102)
      	at PluginClassLoader for jersey2-api//org.jvnet.hk2.internal.ServiceLocatorImpl.internalGetAllServiceHandles(ServiceLocatorImpl.java:1481)
      	at PluginClassLoader for jersey2-api//org.jvnet.hk2.internal.ServiceLocatorImpl.getAllServices(ServiceLocatorImpl.java:799)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.inject.hk2.AbstractHk2InjectionManager.getAllInstances(AbstractHk2InjectionManager.java:171)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.inject.hk2.ImmediateHk2InjectionManager.getAllInstances(ImmediateHk2InjectionManager.java:30)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.internal.ContextResolverFactory$ContextResolversConfigurator.postInit(ContextResolverFactory.java:69)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.client.ClientConfig$State.lambda$initRuntime$2(ClientConfig.java:463)
      	at java.base/java.util.Arrays$ArrayList.forEach(Arrays.java:4305)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.client.ClientConfig$State.initRuntime(ClientConfig.java:463)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.internal.util.collection.Values$LazyValueImpl.get(Values.java:317)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.client.ClientConfig.getRuntime(ClientConfig.java:829)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.client.ClientRequest.getClientRuntime(ClientRequest.java:183)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.client.JerseyWebTarget.onBuilder(JerseyWebTarget.java:371)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.client.JerseyWebTarget.request(JerseyWebTarget.java:199)
      	at PluginClassLoader for jersey2-api//org.glassfish.jersey.client.JerseyWebTarget.request(JerseyWebTarget.java:38)
      	at PluginClassLoader for gitlab-api//org.gitlab4j.api.GitLabApiClient.invocation(GitLabApiClient.java:842)
      	at PluginClassLoader for gitlab-api//org.gitlab4j.api.GitLabApiClient.invocation(GitLabApiClient.java:806)
      	at PluginClassLoader for gitlab-api//org.gitlab4j.api.GitLabApiClient.get(GitLabApiClient.java:417)
      	at PluginClassLoader for gitlab-api//org.gitlab4j.api.GitLabApiClient.get(GitLabApiClient.java:405)
      	at PluginClassLoader for gitlab-api//org.gitlab4j.api.AbstractApi.get(AbstractApi.java:258)
      	at PluginClassLoader for gitlab-api//org.gitlab4j.api.ProjectApi.getProject(ProjectApi.java:752)
      	at PluginClassLoader for gitlab-api//org.gitlab4j.api.ProjectApi.getProject(ProjectApi.java:684)
      	at PluginClassLoader for gitlab-branch-source//io.jenkins.plugins.gitlabbranchsource.GitLabSCMSource.getGitlabProject(GitLabSCMSource.java:214)
      	at PluginClassLoader for gitlab-branch-source//io.jenkins.plugins.gitlabbranchsource.GitLabSCMSource.retrieve(GitLabSCMSource.java:265)
      	at PluginClassLoader for scm-api//jenkins.scm.api.SCMSource.fetch(SCMSource.java:581)
      	at PluginClassLoader for workflow-multibranch//org.jenkinsci.plugins.workflow.multibranch.SCMBinder.create(SCMBinder.java:104)
      	at PluginClassLoader for workflow-job//org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:317)
      	at hudson.model.ResourceController.execute(ResourceController.java:101)
      	at hudson.model.Executor.run(Executor.java:445)
      Caused: org.gitlab4j.api.GitLabApiException
      	at PluginClassLoader for gitlab-api//org.gitlab4j.api.AbstractApi.handle(AbstractApi.java:744)
      	at PluginClassLoader for gitlab-api//org.gitlab4j.api.AbstractApi.get(AbstractApi.java:260)
      	at PluginClassLoader for gitlab-api//org.gitlab4j.api.ProjectApi.getProject(ProjectApi.java:752)
      	at PluginClassLoader for gitlab-api//org.gitlab4j.api.ProjectApi.getProject(ProjectApi.java:684)
      	at PluginClassLoader for gitlab-branch-source//io.jenkins.plugins.gitlabbranchsource.GitLabSCMSource.getGitlabProject(GitLabSCMSource.java:214)
      Caused: java.lang.IllegalStateException: Failed to retrieve project project/webapp
      	at PluginClassLoader for gitlab-branch-source//io.jenkins.plugins.gitlabbranchsource.GitLabSCMSource.getGitlabProject(GitLabSCMSource.java:219)
      	at PluginClassLoader for gitlab-branch-source//io.jenkins.plugins.gitlabbranchsource.GitLabSCMSource.retrieve(GitLabSCMSource.java:265)
      	at PluginClassLoader for scm-api//jenkins.scm.api.SCMSource.fetch(SCMSource.java:581)
      	at PluginClassLoader for workflow-multibranch//org.jenkinsci.plugins.workflow.multibranch.SCMBinder.create(SCMBinder.java:104)
      	at PluginClassLoader for workflow-job//org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:317)
      	at hudson.model.ResourceController.execute(ResourceController.java:101)
      	at hudson.model.Executor.run(Executor.java:445)
      [withMaven] downstreamPipelineTriggerRunListener - Failure to introspect build steps: java.io.IOException:

      Workaround:
      Downgrading the jackson2-api plugin to version 2.19.2-408.v18248a_324cfe resolves the issue.

            Unassigned Unassigned
            flavius_airinei Flavius
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: