現在、Spring MVC Webアプリに取り組んでおり、@ 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以降にアップグレードする必要があります。
この回答を参照してください: 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>
here からわかるように、それはそのアーティファクトの最新の安定バージョンです
クラスorg.postgresql.Driver
が見つからなかったことを示すNoClassDefFoundError
を受け取ったとしましょう。
Jarvanaを使用して、次のようなorg.postgresql.Driver
を提供できる依存関係を検索します。http://www.jarvana.com/jarvana/search?search_type=class&Java_class=org .postgresql.Driverこれにより
上記の依存関係をMaven依存関係形式に変換します。
<dependency> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.1-901.jdbc4</version> </dependency>
thisのように検索して、上記がMaven Centralで利用できることを確認します。g:"postgresql" AND a:"postgresql"
(g
はGroupIDを表し、a
はartifactIDを表します)
最後に、pom.xmlに追加します
必要な依存関係のおおよその考えがある場合、またはリストを指定して必要な依存関係を把握できる場合、m2e '依存関係検索は、pom.xmlに依存関係を追加する最も簡単な方法です。
手順:
次のスナップショットでマークされたA-D:
IntelliJでは、依存関係の検索がはるかに簡単です。あなたがする必要があるのは、Mavenセントラルリポジトリが次のようにIntelliJによってインデックス付けされていることを確認することです。
そして、ポンポンに入って、 dep+Tab (または Alt+Insert here )に示されているように、これが得られるものです。
未解決のインポートがあるクラスにいる場合は、クイックフィックスにより、対応するMavenリポジトリを検索および追加するオプションが提供されます。 Alt+Enter 不足しているクラス/パッケージ:
すごい!
これはHibernateなしで私に起こりました。
私のPCで問題なく動作し、EC2 Linuxサーバーでは動作しませんでした。
その理由は、validation-api-1.0.0.GA.jar
ファイル/usr/share/Tomcat/lib
。
1回validation-api-1.0.0.GA.jar
削除、うまくいきました。
私の場合、同じ問題がありましたが、mavenによってダウンロードされたhibernate-coreバージョン4.1.8.Finalのjarが破損しているために発生していました。バージョン4.1.6.Finalに切り替えて、動作を開始しました。私はSTSとSpringリポジトリを使用していました。
これが誰かを助けることを願っています。
次のエラーが表示されました。
initメソッドの呼び出しに失敗しました;ネストされた例外はjavax.validation.ValidationException:使用可能なプロバイダーリゾルバーを取得できません
WEB-INF/libディレクトリに、次の両方のjarファイルに存在するValidator.classのtwoバージョンがあることを発見しました。
Com.springsource.javax.validation-1.0.0.GA.jarをWEB-INF/libディレクトリから削除しました。古いため、サポートされなくなったためです。そうすることで、私のアプリケーションは完全に機能しました。他の投稿から、私の問題はクラスパス上の同じファイルの重複バージョンに関係していることがわかりました。 Spring 3 Validation を読んだ後、どのファイルが問題を引き起こしているかを見つけました。
同じ状況で、Hibernate-anotationおよびhibernate-common-annotationから以下にリストするHibernate4注釈への注釈についてのみ、Jarバージョンを更新します。 Hibernate 4の場合、このjar-
1-hibernate-commons-annotations-4.0.5.Final 2-hibernate-validator-4.2.0.Final
これがあなたにも役立つことを願っています。