javax.validation.ValidationException: impossible de trouver le fournisseur par défaut

je travaille actuellement sur L'application Web MVC du printemps et j'essaie de connecter la validation en utilisant l'annotation @Valid. Quand j'allume l'application, j'obtiens l'exception suivante:

javax.validation.ValidationException: Unable to find a default provider
<!-J'ai le validateur D'hibernation 3.1.0.GA sur le classpath ainsi que la validation javax 1.0.0.GA, hibernation du noyau 3.3.1.AG et Annotations d'hibernation 3.4.0.GA.

y a-t-il une incompatibilité dans ces versions que je ne vois pas, ou est-ce que quelqu'un peut penser à n'importe quelle raison pour laquelle je suis encore obtenir cette exception avec Hibernate Validator sur le chemin de la classe?

santé,

Chapeau

31
demandé sur Pascal Thivent 2010-10-21 02:54:49

6 réponses

le validateur D'hibernation 3.1 n'est pas un fournisseur JSR303. Vous avez besoin de mettre à jour vers Hibernate Validator 4 ou plus tard.

25
répondu Affe 2010-10-20 23:08:13

Voir cette réponse : https://stackoverflow.com/a/3989936/325742

Pour corriger, Ajouter cette dépendance maven Processeur D'Annotation Du Validateur D'Hibernation.

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

C'est la dernière version stable de cet artefact, comme vu de ici


Générique façon de trouver une dépendance

disons que vous avez un NoClassDefFoundError indiquant que la classe org.postgresql.Driver n'a pas été trouvé.

  1. utilisez Jarvana pour rechercher une dépendance qui peut fournir org.postgresql.Driver comme ainsi : http://www.jarvana.com/jarvana/search?search_type=class&java_class=org.postgresql.Driver ce qui donne enter image description here

  2. Traduire la au-dessus de la dépendance dans maven dependency format :

    <dependency>
        <groupId>postgresql</groupId>
       <artifactId>postgresql</artifactId>
       <version>9.1-901.jdbc4</version>
     </dependency>
    
  3. confirmer que ce qui précède est disponible à Maven Central en effectuant une recherche comme :

    g:"postgresql" AND a:"postgresql"

    (où g signifie mérou eta signifie artifactID)

  4. enfin, ajoutez - le à votre pom.xml


Trouver des Dépendances à l'aide de m2e

Si vous avez une idée approximative de la dépendance nécessaire ou peut comprendre une vous avez besoin d'une liste, puis m2e's peut être le moyen le plus rapide d'ajouter une dépendance à votre pom.xml

Mesures :

  1. Cliquez sur l'onglet Dépendances (A) dans votre pom.xml
  2. Cliquez sur Ajouter (B)
  3. Recherche de la dépendance par groupId/artifactId (C)
  4. double-cliquez sur celui requis à partir des résultats de recherche pour l'ajouter directement à votre pom.xml (D)

A-D est marqué dans le capture d'écran suivante : enter image description here


Trouver des dépendances dans IntelliJ Idea

à IntelliJ, chercher une dépendance est beaucoup plus facile. Tout ce que vous devez faire, est de s'assurer que le Maven Central repo a été indexé par IntelliJ comme cela:

enter image description here

Et ensuite, allez dans le pom, faire un dep+Onglet (ou Alt+ Insert comme le montre la ici), et c'est ce que vous obtenez: enter image description here

si vous êtes dans une classe qui a un import non résolu, alors le Quick fix vous donne une option de recherche et d'ajout du Maven repo correspondant en faisant un Alt+Entrée sur la classe/Le Paquet manquant: enter image description here

génial je dis !


37
répondu Ashutosh Jindal 2017-05-23 12:34:41

cela m'est arrivé sans hibernation.

fonctionne très bien sur mon PC, il n'a pas fonctionné sur mon serveur Linux EC2.

La raison en est l'existence de validation-api-1.0.0.GA.jar fichier /usr/share/tomcat/lib.

une Fois validation-api-1.0.0.GA.jar supprimé, il a travaillé beaucoup.

23
répondu Kof 2012-12-10 13:28:30

dans mon cas, j'ai eu le MÊME PROBLÈME, MAIS c'était parce que le bocal de la version 4.1.8 hibernate-core.La version finale téléchargée par maven a été corrompue. Je swithed à la version 4.1.6.Finale et il a commencé à travailler. J'utilisais les dépôts STS et spring.

Espérons que cela aide quelqu'un.

2
répondu Damian 2013-05-02 14:20:16

dans la même Situation, Je ne mets à jour ma version Jar que pour les anotations des anotations hibernate-anotation et hibernate-common-annotation aux Anotations Hibernate4 qui sont énumérées ci-dessous. Pour Hibernate 4 Vous pouvez utiliser ce bocaux -

1-hibernation-communs-annotations-4.0.5.Final 2-hibernate-validator-4.2.0.Final

J'espère que cela marchera aussi pour vous.

0
répondu pintu 2015-11-04 06:10:32

j'ai reçu l'erreur suivante:

échec de L'Invocation de la méthode init; l'exception imbriquée est javax.validation.ValidationException: impossible d'obtenir les résolveurs de fournisseurs disponibles

j'ai découvert que dans mon répertoire WEB-INF/lib j'avais deux versions de Validator.classe présente dans les deux pots suivants fichiers:

  • org.springframework.contexte 3.1.1.PUBLIER.jar
  • com.springsource.javax.validation-1.0.0.GA.jar

I removed the com.springsource.javax.validation-1.0.0.GA.jar du répertoire WEB-INF/lib parce qu'il est plus ancien et n'est plus supporté. Après cela, ma demande a parfaitement fonctionné. J'ai appris d'autres messages que mon problème avait quelque chose à voir avec les versions dupliquées du même fichier sur classpath. J'ai compris quel fichier causait le problème après avoir lu Validation Du Printemps 3

0
répondu Armanda K. 2015-12-11 21:29:57