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
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.
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é.
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 donneTraduire 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>
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)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 :
- Cliquez sur l'onglet Dépendances (A) dans votre pom.xml
- Cliquez sur Ajouter (B)
- Recherche de la dépendance par groupId/artifactId (C)
- 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 :
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:
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:
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:
génial je dis !
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.
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.
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.
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