-
Bug
-
Resolution: Fixed
-
Major
-
None
-
Jenkins 1.525, 1.526
Maven Integration plugin 1.525, 1.526
Credentials Plugin 1.5
Jenkins shows following error at startup.
06.08.2013 18:06:00 jenkins.InitReactorRunner$1 onAttained INFO: Prepared all plugins 06.08.2013 18:06:06 hudson.ExtensionFinder$GuiceFinder$FaultTolerantScope$1 error WARNUNG: Failed to instantiate Key[type=org.jenkinsci.plugins.configfiles.maven.security.MvnServerPassword$DescriptorImpl, annotation=[none]]; skip ping this component com.google.inject.ProvisionException: Guice provision errors: 1) Error injecting constructor, java.lang.AssertionError: Outer class class org.jenkinsci.plugins.configfiles.maven.security.MvnServerPassword of c lass org.jenkinsci.plugins.configfiles.maven.security.MvnServerPassword$DescriptorImpl is not assignable to interface com.cloudbees.plugins.credent ials.Credentials. Perhaps wrong outer class? at org.jenkinsci.plugins.configfiles.maven.security.MvnServerPassword$DescriptorImpl.<init>(MvnServerPassword.java:58) 1 error at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:52) at com.google.inject.Scopes$1$1.get(Scopes.java:59) at hudson.ExtensionFinder$GuiceFinder$FaultTolerantScope$1.get(ExtensionFinder.java:429) at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41) at com.google.inject.internal.InjectorImpl$3$1.call(InjectorImpl.java:965) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1011) at com.google.inject.internal.InjectorImpl$3.get(InjectorImpl.java:961) at hudson.ExtensionFinder$GuiceFinder._find(ExtensionFinder.java:391) at hudson.ExtensionFinder$GuiceFinder.find(ExtensionFinder.java:382) at hudson.ExtensionFinder._find(ExtensionFinder.java:151) at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:326) at hudson.ExtensionList.load(ExtensionList.java:295) at hudson.ExtensionList.ensureLoaded(ExtensionList.java:248) at hudson.ExtensionList.iterator(ExtensionList.java:138) at jenkins.model.Jenkins.getDescriptorByType(Jenkins.java:1183) at hudson.plugins.copyartifact.BuildSelectorParameter.initAliases(BuildSelectorParameter.java:100) at hudson.plugins.copyartifact.CopyArtifactPlugin.postInitialize(CopyArtifactPlugin.java:35) at hudson.PluginManager$2$1$2.run(PluginManager.java:353) at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:146) at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:259) at jenkins.model.Jenkins$7.runTask(Jenkins.java:895) at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:187) at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:94) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.AssertionError: Outer class class org.jenkinsci.plugins.configfiles.maven.security.MvnServerPassword of class org.jenkinsci.pl ugins.configfiles.maven.security.MvnServerPassword$DescriptorImpl is not assignable to interface com.cloudbees.plugins.credentials.Credentials. Per haps wrong outer class? at hudson.model.Descriptor.<init>(Descriptor.java:277) at com.cloudbees.plugins.credentials.CredentialsDescriptor.<init>(CredentialsDescriptor.java:56) at org.jenkinsci.plugins.configfiles.maven.security.MvnServerPassword$DescriptorImpl.<init>(MvnServerPassword.java:58) at org.jenkinsci.plugins.configfiles.maven.security.MvnServerPassword$DescriptorImpl$$FastClassByGuice$$6542c798.newInstance(<generated>) at com.google.inject.internal.cglib.reflect.$FastConstructor.newInstance(FastConstructor.java:40) at com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:61) at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:108) at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:87) at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:259) at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46) at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1018) at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40) ... 25 more 06.08.2013 18:06:06 jenkins.InitReactorRunner$1 onAttained INFO: Started all plugins
I'm running Jenkins 1.527 with Credentials 1.7.3 and Config File Provider 2.6.1 and get the same error. Looking at the source, the exception is expected (albeit unwanted of course):
The outer class of MvnServerPassword$DescriptorImpl (MvnServerPassword) doesn't implement (or extend from something that implements) the Credentials interface (it doesn't implement/extend anything). This may have been intentional, but since MvnServerPassword$DescriptorImpl extends CredentialsDescriptor, the outer class needs to be assignable to Credentials.
https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Descriptor.java#L258 (CredentialsDescriptor extends Descriptor with a type parameter of Credentials)
https://github.com/jenkinsci/credentials-plugin/blob/master/src/main/java/com/cloudbees/plugins/credentials/CredentialsDescriptor.java#L37