-
Bug
-
Resolution: Fixed
-
Major
-
None
-
jenkins-core 1.509, gradle-jpi-plugin 0.5.2, Gradle 1.8
The job-dsl-plugin currently uses the gradle-jpi-plugin with jenkins-core 1.480 and everything is fine. But when trying to update to jenkins-core 1.509, all tests using JenkinsRule fail because the class org.jenkinsci.main.modules.instance_identity.InstanceIdentity is missing.
INFO: Loaded all jobs Jun 27, 2014 4:59:18 PM hudson.ExtensionFinder$GuiceFinder <init> SEVERE: Failed to create Guice container from all the plugins com.google.common.collect.ComputationException: java.lang.NoClassDefFoundError: Lorg/jenkinsci/main/modules/instance_identity/InstanceIdentity; at com.google.common.collect.MapMaker$ComputingMapAdapter.get(MapMaker.java:887) at com.google.inject.internal.FailableCache.get(FailableCache.java:49) at com.google.inject.internal.MembersInjectorStore.get(MembersInjectorStore.java:66) at com.google.inject.internal.ConstructorInjectorStore.createConstructor(ConstructorInjectorStore.java:73) at com.google.inject.internal.ConstructorInjectorStore.access$000(ConstructorInjectorStore.java:29) at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:36) at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:33) at com.google.inject.internal.FailableCache$1.apply(FailableCache.java:38) at com.google.common.collect.ComputingConcurrentHashMap$ComputingValueReference.compute(ComputingConcurrentHashMap.java:356) at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.compute(ComputingConcurrentHashMap.java:182) at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.getOrCompute(ComputingConcurrentHashMap.java:151) at com.google.common.collect.ComputingConcurrentHashMap.getOrCompute(ComputingConcurrentHashMap.java:67) at com.google.common.collect.MapMaker$ComputingMapAdapter.get(MapMaker.java:883) at com.google.inject.internal.FailableCache.get(FailableCache.java:49) at com.google.inject.internal.ConstructorInjectorStore.get(ConstructorInjectorStore.java:49) at com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:127) at com.google.inject.internal.InjectorImpl.initializeBinding(InjectorImpl.java:506) at com.google.inject.internal.AbstractBindingProcessor$Processor$1.run(AbstractBindingProcessor.java:171) at com.google.inject.internal.ProcessedBindingData.initializeBindings(ProcessedBindingData.java:44) at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:123) at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107) at com.google.inject.Guice.createInjector(Guice.java:94) at com.google.inject.Guice.createInjector(Guice.java:71) at hudson.ExtensionFinder$GuiceFinder.<init>(ExtensionFinder.java:282) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at java.lang.Class.newInstance(Class.java:374) at net.java.sezpoz.IndexItem.instance(IndexItem.java:181) at hudson.ExtensionFinder$Sezpoz._find(ExtensionFinder.java:625) at hudson.ExtensionFinder$Sezpoz.find(ExtensionFinder.java:600) at hudson.ExtensionFinder._find(ExtensionFinder.java:151) at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:318) at hudson.ExtensionList.load(ExtensionList.java:295) at hudson.ExtensionList.ensureLoaded(ExtensionList.java:248) at hudson.ExtensionList.iterator(ExtensionList.java:138) at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:311) at hudson.ExtensionList.load(ExtensionList.java:295) at hudson.ExtensionList.ensureLoaded(ExtensionList.java:248) at hudson.ExtensionList.get(ExtensionList.java:153) at hudson.PluginManager$PluginUpdateMonitor.getInstance(PluginManager.java:1066) at hudson.maven.PluginImpl.init(PluginImpl.java:54) 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 hudson.init.InitializerFinder.invoke(InitializerFinder.java:120) at hudson.init.InitializerFinder$TaskImpl.run(InitializerFinder.java:184) at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:259) at jenkins.model.Jenkins$7.runTask(Jenkins.java:887) 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.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.NoClassDefFoundError: Lorg/jenkinsci/main/modules/instance_identity/InstanceIdentity; at java.lang.Class.getDeclaredFields0(Native Method) at java.lang.Class.privateGetDeclaredFields(Class.java:2397) at java.lang.Class.getDeclaredFields(Class.java:1806) at com.google.inject.spi.InjectionPoint.getInjectionPoints(InjectionPoint.java:651) at com.google.inject.spi.InjectionPoint.forInstanceMethodsAndFields(InjectionPoint.java:358) at com.google.inject.internal.MembersInjectorStore.createWithListeners(MembersInjectorStore.java:91) at com.google.inject.internal.MembersInjectorStore.access$000(MembersInjectorStore.java:35) at com.google.inject.internal.MembersInjectorStore$1.create(MembersInjectorStore.java:43) at com.google.inject.internal.MembersInjectorStore$1.create(MembersInjectorStore.java:40) at com.google.inject.internal.FailableCache$1.apply(FailableCache.java:38) at com.google.common.collect.ComputingConcurrentHashMap$ComputingValueReference.compute(ComputingConcurrentHashMap.java:356) at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.compute(ComputingConcurrentHashMap.java:182) at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.getOrCompute(ComputingConcurrentHashMap.java:151) at com.google.common.collect.ComputingConcurrentHashMap.getOrCompute(ComputingConcurrentHashMap.java:67) at com.google.common.collect.MapMaker$ComputingMapAdapter.get(MapMaker.java:883) ... 55 more Caused by: java.lang.ClassNotFoundException: org.jenkinsci.main.modules.instance_identity.InstanceIdentity at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 70 more
I think the problem is that the instance-identity module is excluded in JpiPlugin for the jenkinsTest configuration.
https://github.com/jenkinsci/gradle-jpi-plugin/blob/000f571032d83e8da098459a94cf54098d0afc68/src/main/groovy/org/jenkinsci/gradle/plugins/jpi/JpiPlugin.groovy#L259