Ответ 1
Hibernate Validator 3.1 не является поставщиком JSR303. Вам необходимо перейти на Hibernate Validator 4 или более поздней версии.
В настоящее время я работаю над веб-приложением 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 Annotations 3.4.0.GA.
Есть ли несовместимость в тех версиях, которые я не вижу, или кто-нибудь может подумать о какой-либо причине, почему я все еще получаю это исключение с Hibernate Validator на пути к классу?
Приветствия,
Колпачки
Hibernate Validator 3.1 не является поставщиком JSR303. Вам необходимо перейти на Hibernate Validator 4 или более поздней версии.
Смотрите этот ответ: fooobar.com/questions/157791/...
Чтобы исправить, добавьте эту зависимость maven Hibernate Validator Processor.
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>4.1.0.Final</version>
</dependency>
Это последняя стабильная версия этого артефакта, как видно из здесь
Скажем, вы получили a NoClassDefFoundError
, заявив, что класс org.postgresql.Driver
не найден.
Используйте Jarvana для поиска зависимости, которая может обеспечить org.postgresql.Driver
следующим образом: http://www.jarvana.com/jarvana/search?search_type=class&java_class=org.postgresql.Driver strong > , который дает
Переведите вышеуказанную зависимость в формат зависимости maven:
<dependency> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.1-901.jdbc4</version> </dependency>
Подтвердите, что вышеуказанное доступно в Maven Central, например, this:
g:"postgresql" AND a:"postgresql"
(где g
означает GroupID, а a
означает artifactID)
Наконец, добавьте его в свой pom.xml
Если у вас есть приблизительное представление о требуемой зависимости или вы можете определить тот, который вам нужен, дайте список, тогда m2e поиск зависимостей может быть самым быстрым способом добавления зависимости к вашему pom.xml
Шаги:
A-D, отмеченный в следующем снимке:
В IntelliJ поиск зависимостей намного проще. Все, что вам нужно сделать, - убедиться, что центральное репо maven было проиндексировано IntelliJ так:
И затем, перейдите в pom, выполните dep + Tab (или Alt + Insert, как показано здесь), и это то, что вы получаете:
Если вы находитесь в классе с нерешенным импортом, то быстрое исправление дает вам возможность поиска и добавления соответствующего maven-репо, выполнив Alt + Enter в отсутствующем классе/пакете:
Удивительно, что я говорю!
Это случилось со мной без спящего режима.
Отлично работает на моем ПК, он не работал на моем сервере Linux EC2.
Причиной было существование файла validation-api-1.0.0.GA.jar
в разделе /usr/share/tomcat/lib
.
После удаления validation-api-1.0.0.GA.jar
он отлично работает.
В моем случае у меня была та же проблема, но это происходило, потому что банку спящего ядра версии 4.1.8.Final, загруженную maven, была повреждена. Я переключился на версию 4.1.6.Final и начал работать. Я использовал репозитории STS и spring.
Надеюсь, это поможет кому-то.
В той же ситуации я обновляю версию Jar только для анотаций из hibernate-anotation и hibernate-common-annotation для анонсов Hibernate4, которые перечислены ниже. Для Hibernate 4 вы можете использовать эти банки -
1-hibernate-commons-annotations-4.0.5.Final 2-hibernate-validator-4.2.0.Final
Надеюсь, что это сработает и для вас.
Я получил следующую ошибку:
Не удалось вызвать метод init; Вложенное исключение - это javax.validation.ValidationException: невозможно получить доступные разрешения поставщика
Я обнаружил, что в моем каталоге WEB-INF/lib у меня были два версии Validator.class в обоих следующих файлах jar:
Я удалил com.springsource.javax.validation-1.0.0.GA.jar из каталога WEB-INF/lib, потому что он старше и больше не поддерживается. После этого мое приложение отлично работало. Я узнал из других сообщений, что моя проблема связана с повторяющимися версиями одного и того же файла в пути к классам. Я выяснил, какой файл вызвал проблему после чтения Spring 3 Проверка