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

FactoryConfigurationError: Provider for class javax.xml.parsers.DocumentBuilderFactory cannot be created (was "Exceptions after running goals")

    • Icon: Bug Bug
    • Resolution: Not A Defect
    • Icon: Minor Minor
    • pipeline-maven-plugin
    • Jenkins ver. 2.73.2
      Pipeline Maven: 3.0.1

      When I run something simple like:

       

      withMaven(
         maven: 'default maven'
       ) {
         sh "mvn clean clover:setup test clover:aggregate clover:clover"
       }
      

       

      My job actually completes, but follows up with exceptions:

       [Pipeline] }
       [Pipeline] End of Pipeline
       java.util.ServiceConfigurationError: javax.xml.parsers.DocumentBuilderFactory: Provider org.apache.xerces.jaxp.DocumentBuilderFactoryImpl not a subtype
      	 at java.util.ServiceLoader.fail(ServiceLoader.java:239)
      	 at java.util.ServiceLoader.access$300(ServiceLoader.java:185)
      	 at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:376)
      	 at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
      	 at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
      	 at javax.xml.parsers.FactoryFinder$1.run(FactoryFinder.java:294)
      	 at java.security.AccessController.doPrivileged(Native Method)
      	 at javax.xml.parsers.FactoryFinder.findServiceProvider(FactoryFinder.java:289)
       Caused: java.lang.RuntimeException: Provider for class javax.xml.parsers.DocumentBuilderFactory cannot be created
      	 at javax.xml.parsers.FactoryFinder.findServiceProvider(FactoryFinder.java:308)
       Caused: javax.xml.parsers.FactoryConfigurationError: Provider for class javax.xml.parsers.DocumentBuilderFactory cannot be created
      	 at javax.xml.parsers.FactoryFinder.findServiceProvider(FactoryFinder.java:311)
      	 at javax.xml.parsers.FactoryFinder.find(FactoryFinder.java:267)
      	 at javax.xml.parsers.DocumentBuilderFactory.newInstance(DocumentBuilderFactory.java:120)
      	 at org.jenkinsci.plugins.pipeline.maven.MavenSpyLogProcessor.processMavenSpyLogs(MavenSpyLogProcessor.java:74)
      	 at org.jenkinsci.plugins.pipeline.maven.WithMavenStepExecution$WorkspaceCleanupCallback.finished(WithMavenStepExecution.java:876)
      	 at org.jenkinsci.plugins.workflow.steps.BodyExecutionCallback$TailCall.onSuccess(BodyExecutionCallback.java:114)
      	 at org.jenkinsci.plugins.workflow.cps.CpsBodyExecution$SuccessAdapter.receive(CpsBodyExecution.java:362)
      	 at com.cloudbees.groovy.cps.Outcome.resumeFrom(Outcome.java:73)
      	 at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:166)
      	 at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:163)
      	 at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:122)
      	 at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:261)
      	 at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:163)
      	 at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:19)
      	 at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:35)
      	 at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:32)
      	 at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108)
      	 at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:32)
      	 at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:174)
      	 at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:330)
      	 at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$100(CpsThreadGroup.java:82)
      	 at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:242)
      	 at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:230)
      	 at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64)
      	 at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	 at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112)
      	 at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
      	 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
      	 at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	 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)
       Finished: FAILURE
      

          [JENKINS-47486] FactoryConfigurationError: Provider for class javax.xml.parsers.DocumentBuilderFactory cannot be created (was "Exceptions after running goals")

          davestein thanks, I meant "Manage Jenkins / Script Console"

          Cyrille Le Clerc added a comment - davestein thanks, I meant "Manage Jenkins / Script Console"

          Dave Stein added a comment -

          Ahhh: 

          class org.apache.xerces.jaxp.DocumentBuilderFactoryImpl -> file:/var/jenkins_home/plugins/registry_reporter/WEB-INF/lib/xercesImpl-2.6.2.jar

           

          The weird thing is that I think I had this issue in the past, if I had the Jenkins version go too high. But that was impacting Freestyle project at the time, whereas right now I am fine there but not pipeline.

          Dave Stein added a comment - Ahhh:  class org.apache.xerces.jaxp.DocumentBuilderFactoryImpl -> file:/var/jenkins_home/plugins/registry_reporter/WEB-INF/lib/xercesImpl-2.6.2.jar   The weird thing is that I think I had this issue in the past, if I had the Jenkins version go too high. But that was impacting Freestyle project at the time, whereas right now I am fine there but not pipeline.

          Cyrille Le Clerc added a comment - - edited

          davestein I have added an entry in the FAQ: Why do I see messages "javax.xml.parsers.FactoryConfigurationError: Provider for class javax.xml.parsers.DocumentBuilderFactory cannot be created".

          davestein can you fix this plugin "registry_reporter" that does not seem to be a Jenkins Community plugin? The best fix would be to exclude the dependency on xerces. A workaround would be to bump the version of Xerces to the latest.

          Cyrille Le Clerc added a comment - - edited davestein I have added an entry in the FAQ: Why do I see messages "javax.xml.parsers.FactoryConfigurationError: Provider for class javax.xml.parsers.DocumentBuilderFactory cannot be created" . davestein can you fix this plugin "registry_reporter" that does not seem to be a Jenkins Community plugin? The best fix would be to exclude the dependency on xerces. A workaround would be to bump the version of Xerces to the latest.

          Dave Stein added a comment -

          cleclerc do you have any idea why it would only fail in pipeline case rather than freestyle? I can make updates to the private plugin and see about fixing it, but am still curious about this difference.

          Dave Stein added a comment - cleclerc do you have any idea why it would only fail in pipeline case rather than freestyle? I can make updates to the private plugin and see about fixing it, but am still curious about this difference.

          Dave Stein added a comment -

          Hm I realized something is really wonky here. Even when I don't run my custom plugin, this error is still happening. For sanity's sake, I did bump my plugins deps from xom 1.1 to 1.2.5, however the pipeline has same failure. Not sure how my plugin is impacting maven goals when the plugin step isn't even being called. xom is how xerces is being called, I don't explicitly require it.

          Dave Stein added a comment - Hm I realized something is really wonky here. Even when I don't run my custom plugin, this error is still happening. For sanity's sake, I did bump my plugins deps from xom 1.1 to 1.2.5, however the pipeline has same failure. Not sure how my plugin is impacting maven goals when the plugin step isn't even being called. xom is how xerces is being called, I don't explicitly require it.

          >  Not sure how my plugin is impacting maven goals when the plugin step isn't even being called. xom is how xerces is being called, I don't explicitly require it.

          The withMaven plugin parses the xml file generated by the maven-event-spy it has injected in the environment. If the XML parsing API of the Jenkins master is broken by a plugins that injects an outdated xerces version then withMaven will have errors.

           

          > Not sure how my plugin is impacting maven goals when the plugin step isn't even being called. xom is how xerces is being called, I don't explicitly require it.

          Can you exclude the xerces dependency of your "registry_reporter" plugin? The JVM comes with a xerxes implementation under a shadowed package "com.sun.org.apache.xerces"

          .

          Cyrille Le Clerc added a comment - >  Not sure how my plugin is impacting maven goals when the plugin step isn't even being called. xom is how xerces is being called, I don't explicitly require it. The withMaven plugin parses the xml file generated by the maven-event-spy it has injected in the environment. If the XML parsing API of the Jenkins master is broken by a plugins that injects an outdated xerces version then withMaven will have errors.   > Not sure how my plugin is impacting maven goals when the plugin step isn't even being called. xom is how xerces is being called, I don't explicitly require it. Can you exclude the xerces dependency of your "registry_reporter" plugin? The JVM comes with a xerxes implementation under a shadowed package "com.sun.org.apache.xerces" .

          davestein ping

          Cyrille Le Clerc added a comment - davestein ping

          Dave Stein added a comment -

           

          Sorry, thought I replied to this. I am not explicitly requiring xerxes. It comes down through my dependency on xom package. Should I open a ticket with them and reference this one?

          Dave Stein added a comment -   Sorry, thought I replied to this. I am not explicitly requiring xerxes. It comes down through my dependency on xom package. Should I open a ticket with them and reference this one?

          davestein I would recommend you to tweak your pom.xml to exclude or bump the outdated dependencies. I would prefer to exclude:

          <dependency>
              <groupId>xom</groupId>
              <artifactId>xom</artifactId>
              <version>1.2.5</version>
              <exclusions>
                  <exclusion>
                      <groupId>xml-apis</groupId>
                      <artifactId>xml-apis</artifactId>
                  </exclusion>
                  <exclusion>
                      <groupId>xerces</groupId>
                      <artifactId>xercesImpl</artifactId>
                  </exclusion>
                  <exclusion>
                      <groupId>xalan</groupId>
                      <artifactId>xalan</artifactId>
                  </exclusion>
              </exclusions>
          </dependency>
          

          Reference: http://search.maven.org/remotecontent?filepath=xom/xom/1.2.5/xom-1.2.5.pom

          Cyrille Le Clerc added a comment - davestein I would recommend you to tweak your pom.xml to exclude or bump the outdated dependencies. I would prefer to exclude: either exclude the transitive dependency brought by "xom:xom": https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html#How_to_use_dependency_exclusions <dependency> <groupId> xom </groupId> <artifactId> xom </artifactId> <version> 1.2.5 </version> <exclusions> <exclusion> <groupId> xml-apis </groupId> <artifactId> xml-apis </artifactId> </exclusion> <exclusion> <groupId> xerces </groupId> <artifactId> xercesImpl </artifactId> </exclusion> <exclusion> <groupId> xalan </groupId> <artifactId> xalan </artifactId> </exclusion> </exclusions> </dependency> or bump xalan, xerces and xml-apis using Maven <dependencyManagement> in your pom.xml https://maven.apache.org/pom.html#Dependency_Version_Requirement_Specification#Dependency_Management Reference: http://search.maven.org/remotecontent?filepath=xom/xom/1.2.5/xom-1.2.5.pom

          Close as "not a defect" as the problem is not in the pipeline-maven-plugin but is in the other plugin that pulls an invalid version of XML libs and in jenkins-core that let plugins pollute/corrupt the entire JVM

          Cyrille Le Clerc added a comment - Close as "not a defect" as the problem is not in the pipeline-maven-plugin but is in the other plugin that pulls an invalid version of XML libs and in jenkins-core that let plugins pollute/corrupt the entire JVM

            cleclerc Cyrille Le Clerc
            davestein Dave Stein
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: