Caused by: java.lang.NoClassDefFoundError: javax/el/ELManager

出现问题的原因:

在将springboot项目部署到Linux下的Tomcat中,项目无法正常启动(本地能正常运行),Tomcat启动日志中出现:

Caused by: java.lang.NoClassDefFoundError: javax/el/ELManager

各种百度,有说将apache-tomcat/lib目录下,el-api.jar放到Java/jre/lib/ext下。

有说将编译器下的el-api.jar放到apache-tomcat/lib目录下,两种方法都试过了,不行。

问题总结:

出现这个问题的原因,应该是Tomcat的el-api.jar与编译器的el-api.jar包有差异导致的。

我的解决方法:

将我的编译器下的el-api.jar包(我的路径:C:\Program Files\JetBrains\IntelliJ IDEA 2018.1\lib\rt\jasper2.1),

分别放到服务器端的Tomcat的lib包下(我的路径:/usr/local/tomcat/apache-tomcat-7.0.77/lib),

和jdk/lib/ext包下(我的路径:/usr/lib/java-1.8.0/jdk1.8.0_161/jre/lib/ext)。

 

apache-tomcat/lib目录下,拷贝el-api.jar放到D:\Java\jdk1.6.0_11\jre\lib\ext下即可

转载于:https://www.cnblogs.com/Darlin356230410/p/9172474.html

`java.lang.NoClassDefFoundError: javax/servlet/Filter`通常表示Java虚拟机(JVM)在运行时找不到指定的类,这个错误通常发生在试图加载一个已经被删除或者缺失的依赖类时。对于Spring Boot应用中遇到这个问题,可能是Shiro(安全框架)依赖的Servlet API版本与当前项目的环境不匹配,或者Shiro库本身没有正确地添加到构建路径。 解决此问题的方法包括: 1. **确认依赖**:检查你的pom.xml或build.gradle文件中,确保已经包含了正确的Servlet API依赖,例如在Maven中可能需要添加: ```xml <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <!-- 如果你的Spring Boot版本低于2.5,可能会需要更早的版本 --> </dependency> ``` 2. **排除冲突**:如果项目中有多个web相关的依赖,可能存在版本冲突,试着排除其他不需要Servlet的依赖,只保留必要的部分。 3. **重新打包和部署**:尝试清理并重新构建你的项目,有时候构建过程中的缓存问题可能导致类找不到。 类似地,如果是在使用Apache POI处理文件上传时遇到该问题,可能是缺少了`commons-compress`库,需要添加并配置正确的依赖,如: ```xml <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-compress</artifactId> <version>1.21</version> </dependency> ``` 确保版本兼容,并正确引入到你的应用程序中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值