Caused by: java.lang.ClassNotFoundException: javax.el.ELManager

本文记录了解决Spring项目中使用@Valid和@validate注解进行验证时遇到的问题过程。主要涉及el-api版本冲突导致的验证失败,并详细介绍了如何通过更换el-api版本及配置MethodValidationPostProcessor来解决此问题。

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

最近看到一篇博客 介绍@valid 和 @validate 注解,想到项目里的垃圾验证代码,很恶心。所以就照着博客里弄 ,结果出现上面的错误。。。。

参考博客
查了网上的一堆博客,发现 好像是 主要是 el-api版本问题,
我的是tomcat7 , 传统的spring 项目 所以 hibernate-validator 不能高版本 ,必须5.x版本

后来一顿折腾 ,发现tomcat lib 包下的 el-api-2.2.1-b04.jar 这个版本低,好像看到 说必须要高版本的才行,删除了 tomcat7 中的 el-api .引入3.0版本解决

直接从tomcat 8 的 lib考了一个 3.0版本的 解决问题

同时必须配置 一个处理器 ,看了底层是 aop 的思想

@Configuration
public class RootConfig {

    @Bean
    public MethodValidationPostProcessor methodValidationPostProcessor() {
        return new MethodValidationPostProcessor();
    }
}

我的 pom依赖

<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-validator</artifactId>
			<version>5.1.1.Final</version>
		</dependency>
		//这个和下面的我想吐槽 网上一堆2.2.4 /2.2.6/ 3.0.0 版本 ,看晕了 但是下载jar包下来 发现3.0.0 有elManage类
		<dependency>
			<groupId>javax.el</groupId>
			<artifactId>javax.el-api</artifactId>
			<version>3.0.0</version> 
		</dependency>
		<dependency>
			<groupId>org.glassfish</groupId>
			<artifactId>javax.el</artifactId>
			<version>3.0.0</version>
		</dependency>
		<dependency>
			<groupId>javax.validation</groupId>
			<artifactId>validation-api</artifactId>
			<version>2.0.1.Final</version>
		</dependency>
2025-07-24 10:21:42 [RMI TCP Connection(1)-10.164.152.103] DEBUG call:236 - RMI TCP Connection(1)-10.164.152.103: [10.164.152.103] exception: javax.management.InstanceNotFoundException: org.springframework.boot:type=Admin,name=SpringApplication at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1073) ~[?:?] at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:632) ~[?:?] at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:679) ~[?:?] at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1449) ~[?:?] at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1310) ~[?:?] at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1405) ~[?:?] at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.getAttribute(RMIConnectionImpl.java:639) ~[?:?] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[?:?] at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[?:?] at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360) ~[?:?] at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200) ~[?:?] at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197) ~[?:?] at java.base/java.security.AccessController.doPrivileged(AccessController.java:714) ~[?:?] at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196) ~[?:?] at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:598) ~[?:?] at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:844) ~[?:?] at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:721) ~[?:?] at java.base/java.security.AccessController.doPrivileged(AccessController.java:400) ~[?:?] at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:720) ~[?:?] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?] at java.base/java.lang.Thread.run(Thread.java:1583) [?:?]
最新发布
07-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值