javax.validation.ValidationException: невозможно найти поставщика по умолчанию - PullRequest
32 голосов
/ 21 октября 2010

В настоящее время я работаю над веб-приложением 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 на пути к классам?

Приветствия

Caps

Ответы [ 6 ]

37 голосов
/ 16 апреля 2012

Смотрите этот ответ: 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>

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


Общий способ найти зависимость

Скажем, у вас есть 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, выполнив поиск как this :
    g:"postgresql" AND a:"postgresql"
    (где g обозначает GroupID и a обозначает artifactID)

  4. Наконец, добавьте его в ваш pom.xml


Нахождение зависимостей с помощью m2e

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

Шаги:

  1. Нажмите на вкладку Зависимости (A) в вашем pom.xml
  2. Нажмите Добавить (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 on недостающий класс / пакет: enter image description here

Круто, я говорю!


26 голосов
/ 21 октября 2010

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

23 голосов
/ 10 декабря 2012

Это случилось со мной без Hibernate.

Отлично работает на моем ПК, не работает на моем сервере Linux EC2.

Причиной было наличие файла validation-api-1.0.0.GA.jar в /usr/share/tomcat/lib.

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

2 голосов
/ 02 мая 2013

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

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

0 голосов
/ 12 декабря 2015

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

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

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

  • org.springframework.context-3.1.1.RELEASE.jar
  • com.springsource.javax.validation-1.0.0.GA.jar

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

0 голосов
/ 04 ноября 2015

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

1-hibernate-commons-annotations-4.0.5.Final 2-hibernate-validator-4.2.0.Final

Надеюсь, это будет работать дляВы также.

...