title: How to solve NoSuchMethodError for javax.validation when deploying a spring boot application in weblogic server?
body: <p>I am trying to deploy a simple spring boot application that will expose some rest api and I use hibernate entity manager to manipulate entity objects. When I try to deploy this application to Oracle Weblogic 12c, I get the following exception:</p>
  
  <pre><code>&lt;Jan 11, 2016 6:20:14 PM BDT&gt; &lt;Error&gt; &lt;Console&gt; &lt;BEA-240003&gt; &lt;Administration Console encountered the following error: weblogic.application.ModuleException: java.lang.NoSuchMethodError: javax.validation.spi.ConfigurationState.getParameterNameProvider()Ljavax/validation/ParameterNameProvider;
  at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:140)
  at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
  at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:216)
  at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:211)
  at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
  at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:73)
  at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:24)
  at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:729)
  at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
  at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:258)
  at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:48)
  at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:165)
  at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:80)
  at weblogic.deploy.internal.targetserver.operations.AbstractOperation.activate(AbstractOperation.java:587)
  at weblogic.deploy.internal.targetserver.operations.ActivateOperation.activateDeployment(ActivateOperation.java:150)
  at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doCommit(ActivateOperation.java:116)
  at weblogic.deploy.internal.targetserver.operations.AbstractOperation.commit(AbstractOperation.java:339)
  at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentCommit(DeploymentManager.java:846)
  at weblogic.deploy.internal.targetserver.DeploymentManager.activateDeploymentList(DeploymentManager.java:1275)
  at weblogic.deploy.internal.targetserver.DeploymentManager.handleCommit(DeploymentManager.java:442)
  at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.commit(DeploymentServiceDispatcher.java:176)
  at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doCommitCallback(DeploymentReceiverCallbackDeliverer.java:195)
  at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$100(DeploymentReceiverCallbackDeliverer.java:13)
  at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$2.run(DeploymentReceiverCallbackDeliverer.java:68)
  at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:548)
  at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
  at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
  Caused by: java.lang.NoSuchMethodError: javax.validation.spi.ConfigurationState.getParameterNameProvider()Ljavax/validation/ParameterNameProvider;
  at org.hibernate.validator.internal.engine.ValidatorFactoryImpl.&lt;init&gt;(ValidatorFactoryImpl.java:142)
  at org.hibernate.validator.HibernateValidator.buildValidatorFactory(HibernateValidator.java:35)
  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 weblogic.validation.validator.ValidationProvider.invoke(ValidationProvider.java:75)
  at weblogic.validation.validator.ValidationProvider.buildValidatorFactory(ValidationProvider.java:66)
  at org.hibernate.validator.internal.engine.ConfigurationImpl.buildValidatorFactory(ConfigurationImpl.java:302)
  .... rest of the stack trace has been omitted ....
  </code></pre>
  
  <p>In short, I am getting</p>
  
  <blockquote>
    <p>java.lang.NoSuchMethodError:
    javax.validation.spi.ConfigurationState.getParameterNameProvider()Ljavax/validation/ParameterNameProvider;</p>
  </blockquote>
  
  <p>I have gone through similar questions about this problem in stack overflow (like <a href="https://stackoverflow.com/questions/21656146/trouble-starting-hibernate-validator-due-to-bean-validation-api">this</a>, and, <a href="https://stackoverflow.com/questions/17266297/hibernate-error-activating-bean-validation-integration">this</a>), but could not fix the problem. I tried tweaking dependencies on hibernate-validator and javax validation api, but it did not help much. Here is some relevant part of my pom file:</p>
  
  <pre><code>    &lt;dependency&gt;
          &lt;groupId&gt;javax.validation&lt;/groupId&gt;
          &lt;artifactId&gt;validation-api&lt;/artifactId&gt;
          &lt;version&gt;1.1.0.Final&lt;/version&gt;
      &lt;/dependency&gt;
  
      &lt;dependency&gt;
          &lt;groupId&gt;org.hibernate&lt;/groupId&gt;
          &lt;artifactId&gt;hibernate-core&lt;/artifactId&gt;
          &lt;version&gt;5.0.6.Final&lt;/version&gt;
      &lt;/dependency&gt;
  
      &lt;dependency&gt;
          &lt;groupId&gt;org.hibernate&lt;/groupId&gt;
          &lt;artifactId&gt;hibernate-entitymanager&lt;/artifactId&gt;
          &lt;version&gt;5.0.6.Final&lt;/version&gt;
      &lt;/dependency&gt;
  
      &lt;dependency&gt;
          &lt;groupId&gt;org.hibernate&lt;/groupId&gt;
          &lt;artifactId&gt;hibernate-validator&lt;/artifactId&gt;
          &lt;version&gt;5.2.2.Final&lt;/version&gt;
      &lt;/dependency&gt;
  
      &lt;dependency&gt;
          &lt;groupId&gt;org.hibernate&lt;/groupId&gt;
          &lt;artifactId&gt;hibernate-validator-annotation-processor&lt;/artifactId&gt;
          &lt;version&gt;5.2.2.Final&lt;/version&gt;
      &lt;/dependency&gt;
  </code></pre>
  
  <p>And my WEB-INF/weblogic.xml file:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://www.bea.com/ns/weblogic/90
                http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd"&gt;
  
      &lt;container-descriptor&gt;
          &lt;prefer-web-inf-classes&gt;true&lt;/prefer-web-inf-classes&gt;
          &lt;show-archived-real-path-enabled&gt;true&lt;/show-archived-real-path-enabled&gt;
      &lt;/container-descriptor&gt;
  
  &lt;/weblogic-web-app&gt;
  </code></pre>
  
  <p>The only validation annotation I have used so far is @NotNull (javax.validation.constraints.NotNull). WebLogic Server Version: 12.1.3.0.0 running on Java7.</p>
  
  <p>PS: The project runs fine in Tomcat 8.</p>