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

Fails to load with "Illegal use of nonvirtual function call" error

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • yaml-axis-plugin
    • None
    • Jenkins 2.230
      yaml-axis-plugin 0.2.1

      The yaml-axis-plugin fails to load with the error "Illegal use of nonvirtual function call".  Jenkins does start but all builds using the yaml matrix will fail.

       

      I've pasted the error below but it also appears here: 

      https://ci.jenkins.io/job/Plugins/job/yaml-axis-plugin/job/SECURITY-1825/1/console

       

      1) Error injecting constructor, java.lang.VerifyError: (class: org/jenkinsci/plugins/yamlaxis/YamlAxis, method: super$1$spliterator signature: ()Ljava/util/Spliterator;) Illegal use of nonvirtual function call
        at org.jenkinsci.plugins.yamlaxis.YamlAxis$DescriptorImpl.<init>(YamlAxis.groovy:75)1 error
              at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:52)
              at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:145)
              at hudson.ExtensionFinder$GuiceFinder$FaultTolerantScope$1.get(ExtensionFinder.java:440)
              at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
              at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016)
              at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
              at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012)
              at hudson.ExtensionFinder$GuiceFinder._find(ExtensionFinder.java:402)
              at hudson.ExtensionFinder$GuiceFinder.find(ExtensionFinder.java:393)
              at hudson.ClassicPluginStrategy.findComponents(ClassicPluginStrategy.java:344)
              at hudson.ExtensionList.load(ExtensionList.java:381)
              at hudson.ExtensionList.ensureLoaded(ExtensionList.java:317)
              at hudson.ExtensionList.getComponents(ExtensionList.java:183)
              at hudson.DescriptorExtensionList.load(DescriptorExtensionList.java:213)
              at hudson.ExtensionList.ensureLoaded(ExtensionList.java:317)
              at hudson.ExtensionList.iterator(ExtensionList.java:172)
              at org.jenkinsci.plugins.xunit.AliasInitializer.init(AliasInitializer.java:46)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:498)
              at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:104)
              at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:175)
              at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:296)
              at jenkins.model.Jenkins$5.runTask(Jenkins.java:1133)
              at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:214)
              at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
              at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:59)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
              at java.lang.Thread.run(Thread.java:748)
      
      Caused by: java.lang.VerifyError: (class: org/jenkinsci/plugins/yamlaxis/YamlAxis, method: super$1$spliterator signature: ()Ljava/util/Spliterator;) Illegal use of nonvirtual function call
      
              at java.lang.Class.getDeclaredMethods0(Native Method)
              at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
              at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
              at java.lang.Class.getMethod0(Class.java:3018)
              at java.lang.Class.getMethod(Class.java:1784)
              at hudson.model.Descriptor.<init>(Descriptor.java:296)
              at hudson.matrix.AxisDescriptor.<init>(AxisDescriptor.java:44)
              at org.jenkinsci.plugins.yamlaxis.YamlAxis$DescriptorImpl.<init>(YamlAxis.groovy)
              at org.jenkinsci.plugins.yamlaxis.YamlAxis$DescriptorImpl$$FastClassByGuice$$9a80bc2f.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:105)
              at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:32)
              at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:89)
              at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:115)
              at hudson.ExtensionFinder$GuiceFinder$SezpozModule.onProvision(ExtensionFinder.java:577)
              at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:126)
              at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:68)
              at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:87)
              at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267)
              at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
              at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)

       {{}}

          [JENKINS-61859] Fails to load with "Illegal use of nonvirtual function call" error

          Jonah Bull added a comment -

          The root cause seems to be that the plugin is configured with groovy 1.8.9 as a runtime dependency, but the version of groovy shipped with Jenkins (as of the current release) is 2.4.12:

          dependencies {
               // NOTE: groovy version included in Jenkins is 1.8.9
               runtime 'org.codehaus.groovy:groovy-all:1.8.9'

          After updating both the groovy dependency (I added both runtime and compile entries, not sure they're both necessary) and the spock dependency I was able to build a version of the plugin off of master that works. Diff of the changes:

          diff --git a/build.gradle b/build.gradle
          index 66231ac..789574b 100644
          --- a/build.gradle
          +++ b/build.gradle
          @@ -46,10 +46,11 @@ repositories {
           
           dependencies {
               // NOTE: groovy version included in Jenkins is 1.8.9
          -    runtime 'org.codehaus.groovy:groovy-all:1.8.9'
          +    runtime 'org.codehaus.groovy:groovy-all:2.4.12'
          +    compile 'org.codehaus.groovy:groovy-all:2.4.12'
               compile 'org.yaml:snakeyaml:1.26'
           
          -    testCompile 'org.spockframework:spock-core:0.7-groovy-1.8'
          +    testCompile 'org.spockframework:spock-core:1.0-groovy-2.4'
           
               jenkinsPlugins 'org.jenkins-ci.plugins:matrix-project:1.6@jar'
           }

           

          Jonah Bull added a comment - The root cause seems to be that the plugin is configured with groovy 1.8.9 as a runtime dependency, but the version of groovy shipped with Jenkins (as of the current release) is 2.4.12: dependencies {      // NOTE: groovy version included in Jenkins is 1.8.9     runtime 'org.codehaus.groovy:groovy-all:1.8.9' After updating both the groovy dependency (I added both runtime and compile entries, not sure they're both necessary) and the spock dependency I was able to build a version of the plugin off of master that works. Diff of the changes: diff --git a/build.gradle b/build.gradle index 66231ac..789574b 100644 --- a/build.gradle +++ b/build.gradle @@ -46,10 +46,11 @@ repositories { dependencies {      // NOTE: groovy version included in Jenkins is 1.8.9 -    runtime 'org.codehaus.groovy:groovy-all:1.8.9' +    runtime 'org.codehaus.groovy:groovy-all:2.4.12' +    compile 'org.codehaus.groovy:groovy-all:2.4.12'      compile 'org.yaml:snakeyaml:1.26' -    testCompile 'org.spockframework:spock-core:0.7-groovy-1.8' +    testCompile 'org.spockframework:spock-core:1.0-groovy-2.4'      jenkinsPlugins 'org.jenkins-ci.plugins:matrix-project:1.6@jar' }  

          David Leatherman added a comment - This was fixed with https://github.com/jenkinsci/yaml-axis-plugin/pull/18

            sue445 sue445
            leathekd David Leatherman
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: