首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

SpringMVC 配置錯誤:NoClassDefFoundError javax/validation/ValidatorFactory 完整解析

     編輯:程式設計疑難解答

錯誤堆疊核心訊息

CannotLoadBeanClassException: Error loading class [org.springframework.validation.beanvalidation.LocalValidatorFactoryBean]
nested exception is java.lang.NoClassDefFoundError: javax/validation/ValidatorFactory

根本原因

專案缺少 Bean Validation API (JSR-303/349/380) 實作相依套件。Spring 嘗試實例化 LocalValidatorFactoryBean 時,類別路徑找不到 javax.validation.ValidatorFactory 介面。

解決方案 (Maven 專案)

方案一:補齊 API 與實作 (推薦 Hibernate Validator)

<dependency>
    <groupId>jakarta.validation</groupId>
    <artifactId>jakarta.validation-api</artifactId>
    <version>3.0.2</version>
</dependency>
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>8.0.1.Final</version>
</dependency>
<!-- 若使用舊版 Spring (javax 命名空間) -->
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.2.5.Final</version>
</dependency>

方案二:排除衝突的傳遞性相依

若專案已引入 spring-boot-starter-validation,請檢查是否有其他套件排除或覆蓋了 validation-api,使用 mvn dependency:tree | grep validation 確認。

Spring XML 配置檢查

<mvc:annotation-driven validator="validator"/>
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>

確保上述配置存在且 validator bean 名稱一致。

版本對照表

Spring 版本Validation APIHibernate Validator
Spring 5.3.x / Boot 2.5+jakarta.validation-api 2.0+/3.0+6.2.x / 8.0.x
Spring 4.x / Boot 1.5javax.validation:validation-api 1.1/2.05.4.x / 6.0.x
錯誤截圖
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved