java web项目运行出现java.lang.NoSuchFieldError: deferredExpression解决方法!

本文详细介绍了JSTL包冲突在使用J2EE5 Librabries时引发的Tomcat运行错误及其解决方法。包括删除低版本JSTL包、保留J2EE里的JSTL包等步骤,以及推荐使用J2EE1.4版Libraries的解决方案。同时强调了解决过程可能存在的问题及一劳永逸的方法。
出错原因:这种错误可能是由于jstl包冲突引起的,从而引起冲突造成的错误:
第一种情况:原因是lib下有几个jstl包;
第二种情况:但是大多情况下,并非由于lib下有几个jstl包,而是由于使用都使用了J2EE5的Librabries,
而J2EE5是自带了jstl包的,同时又在lib中导入了另外版本的jstl包,这种时候冲突就产生了。
解决方法:
第一种情况:删除较低版本的jstl包只留一下最高版本的jstl包,重启tomcat即可;
第二种情况:删除lib下的jstl包,保留J2EE里的jstl包,重启tomcat即可。
补充:第二种情况的解决方法,会有一个问题就是,每次重部署项目都要去lib下删除jstl包。
 一劳永逸的解决方法就是不用jee5Liberabries,改用j2e4版的Librabriese1.
PS:如果是直接从eclipse里删除,要重新部署一下项目并重启tomcat才行。
以上转载:http://zouhuajian01.blog.163.com/blog/static/117698772011316527903/
改用j2ee1.4版的Librabries.(Myeclipse)
左键点击项目->Properties->Java Build Path ->Libraries下的jee5Liberabries删除->点击右边Add Library ->MyEclipse Libraries->选中j2e4版的Librabriese1.
Java 中,`NoSuchFieldError` 和 `ServletException` 是常见的异常,下面分别分析这两种异常的可能原因及解决办法: ### NoSuchFieldError: MALL_GOODSMINIMUMORDERQUANTITYSETTING_MESSAGE `NoSuchFieldError` 通常是由于类加载器加载的类版本不兼容,或者在编译和运行时类定义不一致所导致。以下是可能的解决办法: #### 1. 检查依赖版本 确保项目中所有依赖的版本是兼容的。若使用 Maven 或 Gradle 管理依赖,需检查 `pom.xml` 或 `build.gradle` 文件,确保没有不同版本的依赖冲突。例如,若有多个依赖引用了同一个类库,但版本不同,就可能引发该异常。可以使用 Maven 的 `dependency:tree` 命令查看依赖树,找出冲突的依赖并排除它们: ```bash mvn dependency:tree ``` #### 2. 清理并重新构建项目 有时候,旧的编译文件可能会导致类版本不一致的问题。可以尝试清理项目的编译目录,然后重新构建项目。例如,在 Maven 项目中,可以使用以下命令: ```bash mvn clean install ``` #### 3. 检查类定义 确认 `MALL_GOODSMINIMUMORDERQUANTITYSETTING_MESSAGE` 字段确实存在于相应的类中,并且访问权限是正确的。检查类的定义文件,确保字段没有被意外删除或修改。 ### javax.servlet.ServletException `ServletException` 是 Servlet 编程中常见的异常,通常表示 Servlet 在处理请求时发生了错误。以下是可能的解决办法: #### 1. 检查 Servlet 配置 确保 Servlet 的配置是正确的,包括 `web.xml` 文件或者使用注解配置的 Servlet 类。检查 Servlet 的映射路径、初始化参数等是否正确。例如,在 `web.xml` 中配置 Servlet: ```xml <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/myServlet</url-pattern> </servlet-mapping> ``` #### 2. 检查 Servlet 代码 检查 Servlet 类的代码,确保 `doGet`、`doPost` 等方法没有抛出异常。可以在方法中添加异常处理逻辑,捕获并记录异常信息: ```java import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { // 处理请求的代码 } catch (Exception e) { // 记录异常信息 e.printStackTrace(); throw new ServletException("处理请求时发生错误", e); } } } ``` #### 3. 检查 Servlet 容器 确保 Servlet 容器(如 Tomcat、Jetty 等)正常运行,并且版本与项目兼容。有时候,Servlet 容器的配置问题也可能导致 `ServletException` 异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱上python的猴子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值