класса javax.утверждение.ValidationException: не удается найти поставщика по умолчанию

в настоящее время я работаю над Spring MVC web app и пытаюсь подключить проверку с помощью аннотации @Valid. Когда я запускаю приложение, я получаю следующее исключение:

javax.validation.ValidationException: Unable to find a default provider

У меня есть Hibernate Validator 3.1.0.GA на пути к классам, а также проверка javax 1.0.0.GA, Hibernate Core 3.3.1.Аннотации GA и Hibernate 3.4.0.Га.

есть ли несовместимость в тех версиях, которые я не вижу, или кто-нибудь может подумать о какой-либо причине, почему я все еще получение этого исключения с помощью Hibernate Validator на пути к классу?

спасибо,

Caps

6 ответов


Hibernate Validator 3.1 не является поставщиком JSR303. Вам необходимо обновить до Hibernate Validator 4 или более поздней версии.


см. этот ответ:https://stackoverflow.com/a/3989936/325742

чтобы исправить, добавьте эту зависимость maven Процессор Аннотаций Hibernate Validator.

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-validator-annotation-processor</artifactId>
  <version>4.1.0.Final</version>
</dependency>

это последняя стабильная версия этого артефакта, как видно из здесь


общий способ поиска зависимости

предположим, что у вас есть a NoClassDefFoundError о том, что класс org.postgresql.Driver не найдено.

  1. используйте Jarvana для поиска зависимости, которая может предоставить org.postgresql.Driver вот так : http://www.jarvana.com/jarvana/search?search_type=class&java_class=org.postgresql.Driver что дает enter image description here

  2. перевести вышеуказанную зависимость в формат зависимости maven:

    <dependency>
        <groupId>postgresql</groupId>
       <artifactId>postgresql</artifactId>
       <version>9.1-901.jdbc4</version>
     </dependency>
    
  3. подтвердите, что вышеуказанное доступно в Maven Central, выполнив поиск как этой :
    g:"postgresql" AND a:"postgresql"
    (где g означает GroupID и a означает artifactID)

  4. наконец, добавьте его в свой pom.в XML


Поиск зависимостей с помощью m2e

если у вас есть приблизительное представление о необходимой зависимости или вы можете выяснить, какой вам нужен список, то m2eпоиск зависимостей может будьте самым быстрым способом добавления зависимости к вашему pom.в XML

действия :

  1. перейдите на вкладку зависимости (A) в pom.в XML
  2. нажмите Add (B)
  3. Поиск зависимости по groupId / artifactId (C)
  4. дважды щелкните нужный из результатов поиска, чтобы добавить его непосредственно в pom.xml (D)

A-D отмечено на следующем снимке : enter image description here


Поиск зависимостей в IntelliJ Idea

в IntelliJ поиск зависимости намного проще. Все, что вам нужно сделать, это убедиться, что центральное РЕПО maven было проиндексировано IntelliJ следующим образом:

enter image description here

а потом, зайди в помпон, сделай dep+ Tab (или Alt+вставить как показано здесь), и это то, что вы получить: enter image description here

если вы находитесь в классе, который имеет неразрешенный импорт, то быстрое исправление дает вам возможность поиска и добавления соответствующего репозитория maven, выполнив Alt+ Enter о пропавшем пакете/: enter image description here

круто я скажу !



Это случилось со мной, без гибернации.

отлично работает на моем компьютере, он не работает на моем сервере EC2 Linux.

причиной было существование под /usr/share/tomcat/lib.

один раз validation-api-1.0.0.GA.jar удален, он отлично работал.


в моем случае у меня была такая же проблема, но это происходило из-за банки hibernate-core версии 4.1.8.Окончательный загруженный maven был поврежден. Я переключился на версию 4.1.6.Финал и он начал работать. Я использовал репозитории STS и spring.

надеюсь, это кому-то поможет.


в той же ситуации я обновляю свою версию Jar только для анотаций из hibernate-anotation и hibernate-common-annotation для анотаций Hibernate4, которые перечислены ниже. Для Hibernate 4 Вы можете использовать эти банки -

1-hibernate-commons-аннотации-4.0.5.Окончательный 2-hibernate-валидатор-4.2.0.Финал

надеюсь, это сработает и для вас.


Я получил следующую ошибку:

не удалось вызвать метод init; вложенным исключением является javax.утверждение.ValidationException: не удается получить доступные разрешители поставщика

Я обнаружил, что в моем каталоге WEB-INF/lib у меня есть два версии валидатора.класс, присутствующий в обоих следующих jar файлы:

  • org.springframework.контекст-3.1.1.ОСВОБОЖДАТЬ.Джар
  • com.springsource.javax.validation-1.0.0.GA.jar

Я удалил com.springsource.javax.validation-1.0.0.GA.jar из каталога WEB-INF/lib, потому что он старше и больше не поддерживается. После этого мое приложение работало отлично. Из других сообщений я узнал, что моя проблема связана с дублирующими версиями одного и того же файла на пути к классам. Я понял. какой файл вызывал проблему после чтения Весна 3 Проверка