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

È stato utile?

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.

  1. 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à entrare descrizione dell'immagine qui

  2. Tradurre la dipendenza sopra in formato dipendenza Maven:

    <dependency>
        <groupId>postgresql</groupId>
       <artifactId>postgresql</artifactId>
       <version>9.1-901.jdbc4</version>
     </dependency>
    
  3. Verificare che quanto sopra è disponibile a Maven centrale effettuando una ricerca come questo :
    g:"postgresql" AND a:"postgresql"
    (Dove g sta per GroupID e a sta per artifactId)

  4. 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:

  1. Fare clic sulla scheda Dipendenze (A) nel pom.xml
  2. Fare clic su Add (B)
  3. Cerca la dipendenza da groupId / artifactId (C)
  4. 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: entrare descrizione dell'immagine qui


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:

entrare descrizione dell'immagine qui

E poi, andare in pom, fare un dep + Tab (o un Alt + Inserisci come mostrato qui ), e questo è quello che si ottiene: entrare descrizione dell'immagine qui

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: entrare descrizione dell'immagine qui

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top