javax.validation.ValidationException: Impossibile trovare provider predefinito
-
09-10-2019 - |
Domanda
Attualmente sto lavorando su Spring MVC web app e cercando di collegare la convalida usando l'annotazione @Valid. Quando apro il l'applicazione sto ottenendo la seguente eccezione:
javax.validation.ValidationException: Unable to find a default provider
Ho Hibernate Validator 3.1.0.GA nel classpath e 1.0.0.GA convalida javax, Hibernate Nucleo 3.3.1.GA e Hibernate annotazioni 3.4.0.GA.
C'è un incompatibilità in quelle versioni che non sto vedendo, o qualcuno può pensare di qualsiasi motivo per cui sto ancora ricevendo questa eccezione con Hibernate Validator sul percorso di classe?
Saluti,
Cappelli
Soluzione
Hibernate Validator 3.1 non è un fornitore di JSR303. È necessario eseguire l'aggiornamento a Hibernate Validator 4 o versione successiva.
Altri suggerimenti
Vedere questa risposta: https://stackoverflow.com/a/3989936/325742
Per risolvere, Aggiungere questo esperto di dipendenza Hibernate Validator annotazione processore .
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>4.1.0.Final</version>
</dependency>
Questa è l'ultima versione stabile di quel manufatto, come si è visto da qui
modo generico di trovare una dipendenza
diciamo di lasciare che hai un un NoClassDefFoundError
affermando che il org.postgresql.Driver
classe non è stata trovata.
-
Usa Jarvana per la ricerca di una dipendenza che può fornire
org.postgresql.Driver
in questo modo: http://www.jarvana.com/jarvana/search?search_type=class&java_class=org.postgresql.Driver che dà -
Tradurre la dipendenza sopra in formato dipendenza Maven:
<dependency> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.1-901.jdbc4</version> </dependency>
-
Verificare che quanto sopra è disponibile a Maven centrale effettuando una ricerca come questo :
g:"postgresql" AND a:"postgresql"
(Doveg
sta per GroupID ea
sta per artifactId) -
Infine, aggiungerlo alla tua pom.xml
Ricerca dipendenze utilizzando M2E
Se avete un'idea approssimativa della dipendenza necessaria o può capire quello che vi serve dato un elenco, quindi M2E 's dipendenze di ricerca può essere il modo più rapido di aggiungere una dipendenza al tuo pom.xml
Passi:
- Fare clic sulla scheda Dipendenze (A) nel pom.xml
- Fare clic su Add (B)
- Cerca la dipendenza da groupId / artifactId (C)
- Fare doppio clic su quello desiderato dai risultati della ricerca di averlo aggiunto direttamente al tuo pom.xml (D)
A-D contrassegnati nel seguente snapshot:
Trovare dipendenze in IntelliJ Idea
In IntelliJ, alzando una dipendenza è molto più facile. Tutto quello che devi fare, è quello di fare in modo che il repo centrale Maven è stato indicizzato da IntelliJ in questo modo:
E poi, andare in pom, fare un dep + Tab (o un Alt + Inserisci come mostrato qui ), e questo è quello che si ottiene:
Se si è in una classe che ha un import irrisolto, quindi la soluzione rapida ti dà la possibilità di cercare e aggiungere il corrispondente repo Maven facendo una Alt + Invio sulla Classe / pacchetto mancante:
Lo dico Impressionante!
Questo è accaduto a me senza Hibernate.
grande esecuzione sul mio PC, non ha funzionato sul mio server EC2 Linux.
Il motivo era un'esistenza di file di validation-api-1.0.0.GA.jar
sotto /usr/share/tomcat/lib
.
Una volta validation-api-1.0.0.GA.jar
cancellato, ha funzionato grande.
Nel mio caso, ho avuto lo stesso problema, ma stava accadendo perché il barattolo di versione hibernate-core 4.1.8.Final scaricato da Maven è stato danneggiato. Ho swithed alla versione 4.1.6.Final ed è iniziato a lavorare. Stavo usando STS e repository di primavera.
Spero che questo aiuta qualcuno.
Nella stessa situazione in cui mi aggiorno la mia versione Jar solo per anotations da hibernate-anotation e hibernate-common-annotazione anotations Hibernate4 che sono elencati di seguito. Per Hibernate 4 è possibile utilizzare questo vasetti -
1-hibernate-commons-annotations-4.0.5.Final 2-hibernate-validator-4.2.0.Final
Spero che questo funzionerà anche per voi.
Ho ricevuto il seguente errore:
Invocazione di metodo init fallito; l'eccezione annidata è javax.validation.ValidationException: impossibile ottenere risolutori di provider disponibili
ho scoperto che nella mia directory WEB-INF / lib avevo due versioni di Validator.class presente in entrambi i file jar seguenti:
- org.springframework.context-3.1.1.RELEASE.jar
- com.springsource.javax.validation-1.0.0.GA.jar
Ho rimosso il com.springsource.javax.validation-1.0.0.GA.jar dalla directory WEB-INF / lib, perché è vecchio e non è più supportato. Dopo questo modo, la mia domanda ha funzionato perfettamente. Ho imparato da altri messaggi che il mio problema aveva a che fare con le versioni duplicate dello stesso file nel classpath. Ho capito che il file è stato la causa del problema dopo la lettura di Spring 3 Validazione