javax.validation.validationException: невозможно найти поставщик по умолчанию

StackOverflow https://stackoverflow.com/questions/3982950

Вопрос

В настоящее время я работаю над веб-приложением Spring MVC и пытаясь подключить проверку, используя аннотацию @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 Antotionations 3.4.0.ga.ga.ga.

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

Ваше здоровье,

Колпачки

Это было полезно?

Решение

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

Другие советы

Смотрите этот ответ: 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 не был найден.

  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 Стенды для артефактидов)

  4. Наконец, добавьте его в свой POM.xml


Нахождение зависимостей с использованием M2E

Если у вас есть приближенное представление о необходимости зависимости или может выяснить, что вам нужно сдать список, то м2Поиск зависимости может быть самым быстрым способом добавления зависимости вашего POM.XML

Шаги:

  1. Нажмите на вкладку зависимости (A) в вашем POM.XML
  2. Нажмите на Add (B)
  3. Поиск зависимости GroupID / ArtiFactid (C)
  4. Дважды щелкните необходимый из результатов поиска, чтобы он добавил его напрямую к вашему POM.XML (D)

Объявление отмечено в следующем снижении:enter image description here


Нахождение зависимостей в Идедии Intellij

В Intellij, глядя вверх по зависимости гораздо проще. Все, что вам нужно сделать, это убедиться, что Maven Central Repo был проиндексирован Intellij, как так:

enter image description here

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

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

Потрясающе, я говорю!


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

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

Причина была существованием validation-api-1.0.0.GA.jar файл под давлением /usr/share/tomcat/lib.

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

В моем случае у меня была такая же проблема, но это происходило, потому что банка с гибернационной ячейкой версии 4.1.8.Винала, загруженная Maven. Я свидился до версии 4.1.6.ffinal, и она начала работать. Я использовал STS и весенние репозитории.

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

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

1-ibernate-Commons-annotations-4.0.5.finh 2-ibernate-validator-4.2.0.ffinal

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

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

Вызов метода 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, потому что он старше и больше не поддерживается. После этого мое приложение работало прекрасно. Из других сообщений я узнал, что у моей проблемы есть что-то с дублирующими версиями того же файла в классе. Я понял, какой файл вызывал проблему после прочтения Весенняя 3 валидации

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top