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

Dependency on Credentials plugin isn't actually optional

      The plugin claims that the dependency on Credentials plugin is optional, but it fails to load all its UI if it's not present.

      2022-09-05 15:44:05.064+0000 [id=41]    WARNING    hudson.ExtensionFinder$Sezpoz#scout: Failed to scout com.checkmarx.jenkins.CxScanBuilder$DescriptorImpl
      java.lang.ClassNotFoundException: com.cloudbees.plugins.credentials.common.IdCredentials
          at hudson.ClassicPluginStrategy$DependencyClassLoader.findClass(ClassicPluginStrategy.java:669)
          at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
          at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
          at hudson.PluginFirstClassLoader2.loadClass(PluginFirstClassLoader2.java:69)
          at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
      Caused: java.lang.NoClassDefFoundError: com/cloudbees/plugins/credentials/common/IdCredentials
          at java.base/java.lang.Class.forName0(Native Method)
          at java.base/java.lang.Class.forName(Class.java:398)
          at hudson.ExtensionFinder$Sezpoz.scout(ExtensionFinder.java:730)
          at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:353)
          at hudson.ExtensionList.load(ExtensionList.java:384)
          at hudson.ExtensionList.ensureLoaded(ExtensionList.java:320)
          at hudson.ExtensionList.getComponents(ExtensionList.java:184)
          at jenkins.model.Jenkins$6.onInitMilestoneAttained(Jenkins.java:1192)
          at jenkins.InitReactorRunner$1.onAttained(InitReactorRunner.java:88)
          at org.jvnet.hudson.reactor.ReactorListener$Aggregator.lambda$onAttained$3(ReactorListener.java:108)
          at org.jvnet.hudson.reactor.ReactorListener$Aggregator.run(ReactorListener.java:115)
          at org.jvnet.hudson.reactor.ReactorListener$Aggregator.onAttained(ReactorListener.java:108)
          at org.jvnet.hudson.reactor.Reactor$1.run(Reactor.java:183)
          at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:121)
          at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:70)
          at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
          at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
          at java.base/java.lang.Thread.run(Thread.java:829)
      2022-09-05 15:44:05.184+0000 [id=41]    WARNING    h.ExtensionFinder$GuiceFinder$SezpozModule#configure: Failed to load com.checkmarx.jenkins.CxScanBuilder$DescriptorImpl
      java.lang.ClassNotFoundException: com.cloudbees.plugins.credentials.common.IdCredentials
          at hudson.ClassicPluginStrategy$DependencyClassLoader.findClass(ClassicPluginStrategy.java:669)
          at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589)
          at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
          at hudson.PluginFirstClassLoader2.loadClass(PluginFirstClassLoader2.java:69)
          at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
      Caused: java.lang.NoClassDefFoundError: com/cloudbees/plugins/credentials/common/IdCredentials
          at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
          at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3137)
          at java.base/java.lang.Class.getDeclaredConstructors(Class.java:2357)
          at hudson.ExtensionFinder$GuiceFinder$SezpozModule.resolve(ExtensionFinder.java:501)
          at hudson.ExtensionFinder$GuiceFinder$SezpozModule.resolve(ExtensionFinder.java:487)
          at hudson.ExtensionFinder$GuiceFinder$SezpozModule.configure(ExtensionFinder.java:531)
          at com.google.inject.AbstractModule.configure(AbstractModule.java:64)
          at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:409)
          at com.google.inject.spi.Elements.getElements(Elements.java:108)
          at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:160)
          at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107)
          at com.google.inject.Guice.createInjector(Guice.java:87)
          at com.google.inject.Guice.createInjector(Guice.java:69)
          at hudson.ExtensionFinder$GuiceFinder.<init>(ExtensionFinder.java:281)
          at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
          at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
          at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
          at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
          at java.base/java.lang.Class.newInstance(Class.java:584)
          at net.java.sezpoz.IndexItem.instance(IndexItem.java:181)
          at hudson.ExtensionFinder$Sezpoz._find(ExtensionFinder.java:706)
          at hudson.ExtensionFinder$Sezpoz.find(ExtensionFinder.java:692)
          at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:359)
          at hudson.ExtensionList.load(ExtensionList.java:384)
          at hudson.ExtensionList.ensureLoaded(ExtensionList.java:320)
          at hudson.ExtensionList.getComponents(ExtensionList.java:184)
          at jenkins.model.Jenkins$6.onInitMilestoneAttained(Jenkins.java:1192)
          at jenkins.InitReactorRunner$1.onAttained(InitReactorRunner.java:88)
          at org.jvnet.hudson.reactor.ReactorListener$Aggregator.lambda$onAttained$3(ReactorListener.java:108)
          at org.jvnet.hudson.reactor.ReactorListener$Aggregator.run(ReactorListener.java:115)
          at org.jvnet.hudson.reactor.ReactorListener$Aggregator.onAttained(ReactorListener.java:108)
          at org.jvnet.hudson.reactor.Reactor$1.run(Reactor.java:183)
          at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:121)
          at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:70)
          at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
          at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
          at java.base/java.lang.Thread.run(Thread.java:829)
       

          [JENKINS-69524] Dependency on Credentials plugin isn't actually optional

          Daniel Beck created issue -

          Basil Crow added a comment -

          Fix should be trivial: just add optional = true to the @Extension annotation for CxScanBuilder.

          Basil Crow added a comment - Fix should be trivial: just add optional = true to the @Extension annotation for CxScanBuilder .
          Basil Crow made changes -
          Labels New: help-wanted
          Basil Crow made changes -
          Labels Original: help-wanted New: help-wanted newbie-friendly

          Daniel Beck added a comment -

          There's basically nothing left of the plugin then. I recommend the dependency be made non-optional, the overwhelming majority of instances have it installed anyway.

          Daniel Beck added a comment - There's basically nothing left of the plugin then. I recommend the dependency be made non-optional, the overwhelming majority of instances have it installed anyway.

          Basil Crow added a comment -

          Sure, a non-optional dependency is always preferable to an optional one. But if a dependency is to be optional, any extensions that consume it need to be optional as well.

          Basil Crow added a comment - Sure, a non-optional dependency is always preferable to an optional one. But if a dependency is to be optional, any extensions that consume it need to be optional as well.
          Mark Waite made changes -
          Labels Original: help-wanted newbie-friendly New: help-wanted
          Mark Waite made changes -
          Assignee Original: Sergey Kadaner [ sergeyk ]

            Unassigned Unassigned
            danielbeck Daniel Beck
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: