[SPRING] javax.validation.ValidationException : 기본 공급자를 찾을 수 없습니다.
SPRINGjavax.validation.ValidationException : 기본 공급자를 찾을 수 없습니다.
나는 현재 Spring MVC 웹 애플리케이션을 작업 중이며 @Valid 주석을 사용하여 유효성 검사를 시도하고있다. 응용 프로그램을 실행하면 다음과 같은 예외가 발생합니다.
javax.validation.ValidationException: Unable to find a default provider
클래스 패스에는 Hibernate Validator 3.1.0.GA뿐만 아니라 javax validation 1.0.0.GA, Hibernate Core 3.3.1.GA 및 Hibernate Annotations 3.4.0.GA가 있습니다.
내가 볼 수없는 버전에서 비 호환성이 있습니까? 아니면 클래스 경로에서 Hibernate Validator를 사용하여이 예외를 여전히 얻고있는 이유에 대해 누구나 생각할 수 있습니까?
건배,
모자
해결법
-
==============================
1.Hibernate Validator 3.1은 JSR303 제공자가 아니다. 당신은 Hibernate Validator 4 또는 그 이상으로 업그레이드 할 필요가있다.
Hibernate Validator 3.1은 JSR303 제공자가 아니다. 당신은 Hibernate Validator 4 또는 그 이상으로 업그레이드 할 필요가있다.
-
==============================
2.이 답변보기 : https://stackoverflow.com/a/3989936/325742
이 답변보기 : https://stackoverflow.com/a/3989936/325742
이 Maven 의존성 Hibernate Validator Annotation Processor를 추가하여 수정한다.
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator-annotation-processor</artifactId> <version>4.1.0.Final</version> </dependency>
그것은 그 유물의 최신 안정 버전입니다. 여기에서 볼 수 있습니다.
NoClassDefFoundError가있어서 org.postgresql.Driver 클래스를 찾을 수 없다고 가정 해 봅시다.
필요한 종속성에 대한 대략적인 아이디어가 있거나 필요한 목록을 알아낼 수있는 경우 m2e의 종속성 검색은 pom.xml에 종속성을 추가하는 가장 빠른 방법이 될 수 있습니다
단계 :
A-D는 다음 스냅 샷에 표시됩니다.
IntelliJ에서는 의존성을 찾는 것이 훨씬 쉽습니다. IntelliJ가 Maven 중앙 저장소를 인덱싱했는지 확인하기 만하면됩니다.
그리고 나서, 폼에 들어가서 dep + Tab (또는 여기에 표시된 Alt + Insert)을 수행하면 다음과 같은 결과를 얻을 수 있습니다 :
해결되지 않은 가져 오기가있는 클래스에있는 경우 빠른 수정으로 누락 된 클래스 / 패키지에서 Alt + Enter를 수행하여 해당 Maven Repo를 검색하고 추가하는 옵션을 제공합니다.
신난다!
-
==============================
3.이것은 최대 절전 모드없이 나에게 일어났다.
이것은 최대 절전 모드없이 나에게 일어났다.
내 PC에서 잘 돌아가고, 그것은 내 EC2 리눅스 서버에서 작동하지 않았다.
그 이유는 / usr / share / tomcat / lib에 validation-api-1.0.0.GA.jar 파일이 존재하기 때문입니다.
validation-api-1.0.0.GA.jar 파일이 삭제되면 효과가있었습니다.
-
==============================
4.내 경우에는 동일한 문제가 있었지만, 최대 절전 모드 코어 버전 4.1.8.Maven에서 다운로드 한 최종 버전이 손상 되었기 때문에 이러한 현상이 발생했습니다. 나는 버전 4.1.6로 전환했다. 최종 그리고 그것은 일하기 시작했다. STS 및 스프링 저장소를 사용하고있었습니다.
내 경우에는 동일한 문제가 있었지만, 최대 절전 모드 코어 버전 4.1.8.Maven에서 다운로드 한 최종 버전이 손상 되었기 때문에 이러한 현상이 발생했습니다. 나는 버전 4.1.6로 전환했다. 최종 그리고 그것은 일하기 시작했다. STS 및 스프링 저장소를 사용하고있었습니다.
희망이 사람을 도움이됩니다.
-
==============================
5.동일한 상황에서 아래에 열거 된 Hibernate4 anotations에 대한 최대 절전 모드와 최대 절전 모드 공통 주석으로부터의 주석만을 위해 Jar 버전을 업데이트한다. Hibernate 4에서는이 jars-
동일한 상황에서 아래에 열거 된 Hibernate4 anotations에 대한 최대 절전 모드와 최대 절전 모드 공통 주석으로부터의 주석만을 위해 Jar 버전을 업데이트한다. Hibernate 4에서는이 jars-
1-hibernate-commons-annotations-4.0.5.Final 2-hibernate-validator-4.2.0.Final
희망이 당신을 위해 또한 작동합니다.
-
==============================
6.다음과 같은 오류가 발생했습니다.
다음과 같은 오류가 발생했습니다.
init 메소드의 호출이 실패했습니다. 중첩 예외는 javax.validation.ValidationException : 사용 가능한 공급자 확인자를 가져올 수 없습니다.
WEB-INF / lib 디렉토리에서 Validator.class의 두 가지 버전이 모두 다음 jar 파일에 있음을 발견했습니다.
WEB-INF / lib 디렉토리에서 com.springsource.javax.validation-1.0.0.GA.jar 파일을 제거했습니다.이 파일은 이전 버전이므로 더 이상 지원되지 않습니다. 그렇게 한 후, 제 응용 프로그램은 완벽하게 작동했습니다. 내 문제는 클래스 패스에서 같은 파일의 중복 된 버전과 관련이 있다는 것을 다른 게시물에서 배웠다. 나는 Spring 3 Validation을 읽은 후에 어떤 파일이 문제를 일으키는 지 알아 냈습니다.
from https://stackoverflow.com/questions/3982950/javax-validation-validationexception-unable-to-find-default-provider by cc-by-sa and MIT license