복붙노트

[SPRING] javax.validation.ValidationException : 기본 공급자를 찾을 수 없습니다.

SPRING

javax.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. ==============================

    1.Hibernate Validator 3.1은 JSR303 제공자가 아니다. 당신은 Hibernate Validator 4 또는 그 이상으로 업그레이드 할 필요가있다.

    Hibernate Validator 3.1은 JSR303 제공자가 아니다. 당신은 Hibernate Validator 4 또는 그 이상으로 업그레이드 할 필요가있다.

  2. ==============================

    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. ==============================

    3.이것은 최대 절전 모드없이 나에게 일어났다.

    이것은 최대 절전 모드없이 나에게 일어났다.

    내 PC에서 잘 돌아가고, 그것은 내 EC2 리눅스 서버에서 작동하지 않았다.

    그 이유는 / usr / share / tomcat / lib에 validation-api-1.0.0.GA.jar 파일이 존재하기 때문입니다.

    validation-api-1.0.0.GA.jar 파일이 삭제되면 효과가있었습니다.

  4. ==============================

    4.내 경우에는 동일한 문제가 있었지만, 최대 절전 모드 코어 버전 4.1.8.Maven에서 다운로드 한 최종 버전이 손상 되었기 때문에 이러한 현상이 발생했습니다. 나는 버전 4.1.6로 전환했다. 최종 그리고 그것은 일하기 시작했다. STS 및 스프링 저장소를 사용하고있었습니다.

    내 경우에는 동일한 문제가 있었지만, 최대 절전 모드 코어 버전 4.1.8.Maven에서 다운로드 한 최종 버전이 손상 되었기 때문에 이러한 현상이 발생했습니다. 나는 버전 4.1.6로 전환했다. 최종 그리고 그것은 일하기 시작했다. STS 및 스프링 저장소를 사용하고있었습니다.

    희망이 사람을 도움이됩니다.

  5. ==============================

    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. ==============================

    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을 읽은 후에 어떤 파일이 문제를 일으키는 지 알아 냈습니다.

  7. from https://stackoverflow.com/questions/3982950/javax-validation-validationexception-unable-to-find-default-provider by cc-by-sa and MIT license