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

          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 .

          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.

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

              Created:
              Updated: