簡體   English   中英

javax.validation.ValidationException:無法找到默認提供程序

[英]javax.validation.ValidationException: Unable to find default provider

我目前正在使用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獲得此異常的原因?

干杯,

帽子

請參閱此答案: 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 在此輸入圖像描述

  2. 將上述依賴項轉換為maven依賴項格式:

     <dependency> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.1-901.jdbc4</version> </dependency> 
  3. 確認上述可在Maven的中央通過搜索像這樣
    g:"postgresql" AND a:"postgresql"
    (其中, g表示的GroupID和a代表的artifactId)

  4. 最后,將它添加到您的pom.xml中


使用m2e查找依賴關系

如果您對所需的依賴關系有一個大致的了解,或者可以找出給定列表所需的依賴關系,那么m2e的依賴關系搜索可以是向pom.xml添加依賴關系的最快方法

腳步 :

  1. 單擊pom.xml中的Dependencies選項卡(A)
  2. 點擊添加(B)
  3. 通過groupId / artifactId(C)搜索依賴項
  4. 雙擊搜索結果中所需的一個,將其直接添加到您的pom.xml(D)

AD標記在以下快照中: 在此輸入圖像描述


在IntelliJ Idea中查找依賴項

在IntelliJ中,查找依賴項要容易得多。 您需要做的就是確保maven中央倉庫已被IntelliJ索引,如下所示:

在此輸入圖像描述

然后,進入POM,做了DEP + Tab鍵 (或Alt鍵 + 插入如圖所示這里 ),這是你會得到什么: 在此輸入圖像描述

如果您所在的類具有未解析的導入,則快速修復程序為您提供了通過在缺少的類/包上執行Alt + Enter來搜索和添加相應的maven存儲庫的選項: 在此輸入圖像描述

真棒,我說!


Hibernate Validator 3.1不是JSR303提供程序。 您需要升級到Hibernate Validator 4或更高版本。

沒有Hibernate,這發生在我身上。

在我的電腦上運行良好,它在我的EC2 Linux服務器上無效。

原因是/usr/share/tomcat/lib下存在validation-api-1.0.0.GA.jar文件。

validation-api-1.0.0.GA.jar刪除后,效果很好。

在我的情況下,我遇到了同樣的問題,但它發生了,因為由maven下載的hibernate-core版本4.1.8.Final的jar已損壞。 我轉到版本4.1.6.Final,它開始工作。 我正在使用STS和Spring存儲庫。

希望這有助於某人。

在相同的情況下,我只更新我的Jar版本,用於從hibernate-anotation和hibernate-common-annotation到下面列出的Hibernate4 anotations的anotations。 對於Hibernate 4,你可以使用這個罐子 -

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

希望這對你也有用。

我收到以下錯誤:

調用init方法失敗; 嵌套異常是javax.validation.ValidationException:無法獲取可用的提供程序解析程序

我發現在我的WEB-INF / lib目錄中,我在以下兩個jar文件中都有兩個版本的Validator.class:

  • 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后想出了哪個文件導致了問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM