32

現在、Spring MVC Web アプリに取り組んでおり、@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 でこの例外がまだ発生している理由を誰か考えられますか?

乾杯、

キャップ

4

6 に答える 6

37

この回答を参照してください: 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が見つからないというaa を受け取ったとしましょう。

  1. Jarvana を使用して、次のorg.postgresql.Driverような依存関係を検索します : http://www.jarvana.com/jarvana/search?search_type=class&java_class=org.postgresql.Driverここに画像の説明を入力

  2. 上記の依存関係を Maven 依存関係形式に変換します。

    <dependency>
        <groupId>postgresql</groupId>
       <artifactId>postgresql</artifactId>
       <version>9.1-901.jdbc4</version>
     </dependency>
    
  3. 次のように検索して、Maven Central で上記が利用可能であることを確認します: ( ここでは、GroupID を表し、artifactID を表します)
    g:"postgresql" AND a:"postgresql"
    ga

  4. 最後に、それを pom.xml に追加します


m2e を使用して依存関係を見つける

必要な依存関係のおおよそのアイデアがある場合、またはリストを指定して必要なものを把握できる場合、m2eの依存関係検索は pom.xml に依存関係を追加する最も簡単な方法です。

手順 :

  1. pom.xml の [依存関係] タブ (A) をクリックします。
  2. 追加 (B) をクリックします。
  3. groupId/artifactId で依存関係を検索する (C)
  4. 検索結果から必要なものをダブルクリックして、pom.xml に直接追加します (D)

次のスナップショットでマークされた AD: ここに画像の説明を入力


IntelliJ Idea で依存関係を見つける

IntelliJ では、依存関係の検索がはるかに簡単です。あなたがする必要があるのは、次のようにIntelliJによってmavenの中央レポが索引付けされていることを確認することだけです:

ここに画像の説明を入力

次に、pom に入り、dep+ Tab(またはここに示すようにAlt+ ) を実行すると、次のようになります。 Insertここに画像の説明を入力

未解決のインポートがあるクラスにいる場合、不足しているクラス/パッケージで Alt+を実行することにより、対応する Maven リポジトリを検索して追加するオプションがクイック フィックスで提供されます。Enterここに画像の説明を入力

すごい!


于 2012-04-16T17:13:29.777 に答える
27

Hibernate Validator 3.1 は JSR303 プロバイダーではありません。Hibernate Validator 4 以降にアップグレードする必要があります。

于 2010-10-20T23:08:13.343 に答える
23

これは、休止状態なしで私に起こりました。

私の PC では問題なく動作しますが、EC2 Linux サーバーでは動作しませんでした。

その理由は、 のvalidation-api-1.0.0.GA.jar下にファイルが存在するためでした/usr/share/tomcat/lib

validation-api-1.0.0.GA.jar削除すると、うまくいきました。

于 2012-12-10T13:28:30.200 に答える
2

私の場合、同じ問題が発生しましたが、maven によってダウンロードされた hibernate-core バージョン 4.1.8.Final の jar が破損していたため発生していました。バージョン 4.1.6.Final に切り替えると、動作し始めました。私はSTSと春のリポジトリを使用していました。

これが誰かに役立つことを願っています。

于 2013-05-02T14:20:16.890 に答える
0

次のエラーを受け取りました。

init メソッドの呼び出しに失敗しました。ネストされた例外は javax.validation.ValidationException: Unable to get available provider resolvers です

WEB-INF/lib ディレクトリで、次の jar ファイルの両方に Validator.class の2 つのバージョンが存在することを発見しました。

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

WEB-INF/lib ディレクトリから com.springsource.javax.validation-1.0.0.GA.jar を削除しました。これは古く、サポートされなくなったためです。その後、私のアプリケーションは完全に機能しました。私の問題は、クラスパス上の同じファイルの重複したバージョンと関係があることを他の投稿から学びました。Spring 3 Validationを読んだ後、どのファイルが問題を引き起こしているかを突き止めました

于 2015-12-11T21:29:57.717 に答える
0

同じ状況で、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

これがあなたにとってもうまくいくことを願っています。

于 2015-11-04T06:10:32.557 に答える