javax.validation.ValidationException: Unable to find default provider

Caps picture Caps · Oct 21, 2010 · Viewed 90.9k times · Source

I am currently working on Spring MVC web app and trying to hook up validation using the @Valid annotation. When I fire up the application I'm getting the following exception:

javax.validation.ValidationException: Unable to find a default provider

I have Hibernate Validator 3.1.0.GA on the classpath as well as javax validation 1.0.0.GA, Hibernate Core 3.3.1.GA and Hibernate Annotations 3.4.0.GA.

Is there an incompatiblity in those versions that I'm not seeing, or can anyone think of any reason why I'm still getting this exception with Hibernate Validator on the class path?

Cheers,

Caps

Answer

Ashutosh Jindal picture Ashutosh Jindal · Apr 16, 2012

See this answer : https://stackoverflow.com/a/3989936/325742

To fix, Add this maven dependency Hibernate Validator Annotation Processor.

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-validator-annotation-processor</artifactId>
  <version>4.1.0.Final</version>
</dependency>

That's the latest stable version of that artifact, as seen from here


Generic way of finding a dependency

Let's say that you got a a NoClassDefFoundError stating that the class org.postgresql.Driver was not found.

  1. Use Jarvana to search for a dependency that can provide org.postgresql.Driver like so : http://www.jarvana.com/jarvana/search?search_type=class&java_class=org.postgresql.Driver which gives enter image description here

  2. Translate the above dependency into maven dependency format :

    <dependency>
        <groupId>postgresql</groupId>
       <artifactId>postgresql</artifactId>
       <version>9.1-901.jdbc4</version>
     </dependency>
    
  3. Confirm that the above is available at Maven Central by searching like this :
    g:"postgresql" AND a:"postgresql"
    (where g stands for GroupID and a stands for artifactID)

  4. Finally, add it to your pom.xml


Finding Dependencies using m2e

If you have an approximate idea of the dependency needed or can figure out the one you need given a list, then m2e's dependency search can be the quickest way of adding a dependency to your pom.xml

Steps :

  1. Click on the Dependencies tab (A) in your pom.xml
  2. Click on Add (B)
  3. Search for the dependency by groupId/artifactId (C)
  4. Double click the required one from the search results to have it added directly to your pom.xml (D)

A-D marked in the following snapshot : enter image description here


Finding dependencies in IntelliJ Idea

In IntelliJ, looking up a dependency is much easier. All you need to do, is to make sure that the maven central repo has been indexed by IntelliJ like so:

enter image description here

And then, go into the pom, do a dep+Tab (or an Alt+Insert as shown here), and this is what you get: enter image description here

If you are in a class which has an unresolved import, then the quick fix gives you an option of searching and adding the corresponding maven repo by doing an Alt+Enter on the missing Class/Package: enter image description here

Awesome I say !