org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0

在SSM框架下使用Hibernate Validator进行JSR-380校验时,遇到与Tomcat7中ELManager类相关的NoClassDefFoundError异常。通过调整依赖版本和适配Tomcat7的EL规范,成功解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:SSM+Tomcat7+Maven
在使用org.hibernate.validator的标签限制对象的字符值的时候,出现当下错误
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0’: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javax/el/ELManager
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
org.springframework.beans.factory.support.AbstractBeanFactoryKaTeX parse error: Expected group after '_' at position 742: …icationContext._̲_refresh(Abstra…AbstractConnectionHandler.process(AbstractProtocol.java:637)
org.apache.tomcat.util.net.AprEndpointSocketProcessor.doRun(AprEndpoint.java:2549)org.apache.tomcat.util.net.AprEndpointSocketProcessor.doRun(AprEndpoint.java:2549) org.apache.tomcat.util.net.AprEndpointSocketProcessor.doRun(AprEndpoint.java:2549)org.apache.tomcat.util.net.AprEndpointSocketProcessor.run(AprEndpoint.java:2538)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutorWorker.run(ThreadPoolExecutor.java:617)org.apache.tomcat.util.threads.TaskThreadWorker.run(ThreadPoolExecutor.java:617) org.apache.tomcat.util.threads.TaskThreadWorker.run(ThreadPoolExecutor.java:617)org.apache.tomcat.util.threads.TaskThreadWrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:748)

org.hibernate.validator版本:

<!--JSR-380校验-->
  <dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.9.Final</version>
  </dependency>
  <dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
  </dependency>

尝试pom.xml添加了依赖后仍然无法解决问题:

 <dependency>
    <groupId>javax.el</groupId>
    <artifactId>javax.el-api</artifactId>
    <version>3.0.0</version>
  </dependency>

后来查看了Tomcat的版本支持信息,原使用tomcat7版本和el3.0的版本,查看了tomcat对其他规范确实 是自己没有留意到版本的问题,一味的追求高版本,谨记以后多看看文档。
在这里插入图片描述

Standard Commons Logging discovery in action with spring-jcl: please remove commons-logging.jar from classpath in order to avoid potential conflicts . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/  :: Spring Boot ::   (v3.5.3) 07-28 17:36:29 INFO StartupInfoLogger.java:53 Starting Mb3Application using Java 21.0.7 with PID 16460 (D:\Eclipse\mb3\target\classes started by Administrator in D:\Eclipse\mb3) 07-28 17:36:29 INFO SpringApplication.java:652 No active profile set, falling back to 1 default profile: "default" 07-28 17:36:30 INFO TomcatWebServer.java:111 Tomcat initialized with port 80 (http) 07-28 17:36:30 INFO DirectJDKLog.java:168 Starting service [Tomcat] 07-28 17:36:30 INFO DirectJDKLog.java:168 Starting Servlet engine: [Apache Tomcat/10.1.42] 07-28 17:36:30 INFO DirectJDKLog.java:168 Initializing Spring embedded WebApplicationContext 07-28 17:36:30 INFO ServletWebServerApplicationContext.java:301 Root WebApplicationContext: initialization completed in 798 ms Standard Commons Logging discovery in action with spring-jcl: please remove commons-logging.jar from classpath in order to avoid potential conflicts 07-28 17:36:31 INFO DruidDataSource.java:1002 {dataSource-1} inited 07-28 17:36:31 INFO AbstractImageCaptchaGenerator.java:67 图片验证码[SpringMultiImageCaptchaGenerator]初始化... 07-28 17:36:31 INFO OptionalValidatorFactoryBean.java:48 Failed to set up a Bean Validation provider: jakarta.validation.NoProviderFoundException: Unable to create a Configuration, because no Jakarta Bean Validation provider could be found. Add a provider like Hibernate Validator (RI) to your classpath. 07-28 17:36:31 WARN ThymeleafAutoConfiguration.java:102 Cannot find template location: classpath:/templates/page/ (please add some templates, check your Thymeleaf configuration, or set spring.thymeleaf.check-template-location=false) 07-28 17:36:31 INFO TomcatWebServer.java:243 Tomcat started on port 80 (http) with context path '/' 07-28 17:36:31 INFO StartupInfoLogger.java:59 Started Mb3Application in 1.924 seconds (process running for 2.431)
07-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值