求助,java.lang.NoSuchFieldError这是什么原因

 我来答
匿名用户
2015-12-08
展开全部
有的时候,我们从SVN checkout下来的项目,布置到自己的tomcat里后运行,当非第一次运行某一个模块时会发生
java.lang.NoSuchFieldError: deferredExpression错误,详细错误代码如下:
javax.servlet.ServletException: java.lang.NoSuchFieldError: deferredExpression
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:274)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
oilsb.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:20)

root cause
java.lang.NoSuchFieldError: deferredExpression
org.apache.taglibs.standard.tag.common.core.ForEachSupport.release(ForEachSupport.java:178)
org.apache.jasper.runtime.TagHandlerPool.release(TagHandlerPool.java:166)
org.apache.jsp.sitetotal_005fdisplay_jsp._jspDestroy(sitetotal_005fdisplay_jsp.java:44)
org.apache.jasper.runtime.HttpJspBase.destroy(HttpJspBase.java:61)
org.apache.jasper.servlet.JspServletWrapper.destroy(JspServletWrapper.java:425)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:139)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
oilsb.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:20)
================================
这种错误可能是由于jstl包冲突引起的,从而引起冲突造成的错误:
第一种情况:原因是lib下有几个jstl包;
第二种情况:但是大多情况下,并非由于lib下有几个jstl包,而是由于使用都使用了J2EE5的Librabries,
而J2EE5是自带了jstl包的,同时又在lib中导入了另外版本的jstl包,这种时候冲突就产生了。
解决方法:
第一种情况:删除较低版本的jstl包只留一下最高版本的jstl包,重启tomcat即可;
第二种情况:删除lib下的jstl包,保留J2EE里的jstl包,重启tomcat即可。
补充:第二种情况的解决方法,会有一个问题就是,每次重部署项目都要去lib下删除jstl包。
一劳永逸的解决方法就是不用jee5Liberabries,改用j2ee1.4版的Librabries.(2011.4.19补充)
PS:如果是直接从eclipse里删除,要重新部署一下项目并重启tomcat才行。
网上博客友共享的
育知同创教育
2018-07-31 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
这种情况一般都是jar包出问题引起的。
第一种情况:删除较低版本的jstl包只留一下最高版本的jstl包,重启tomcat即可;
第二种情况:删除lib下的jstl包,保留J2EE里的jstl包,重启tomcat即可。
补充:第二种情况的解决方法,会有一个问题就是,每次重部署项目都要去lib下删除jstl包。
一劳永逸的解决方法就是不用jee5Liberabries,改用j2ee1.4版的Librabries.(2011.4.19补充)
PS:如果是直接从eclipse里删除,要重新部署一下项目并重启tomcat才行。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-05-15
展开全部
这个是反射时调用时抛的异常吗?
Field是指类中定义的变量,这个异常指的是类中没有你要调用的变量。
一般是通过反射获取类中变量时,声明了一个类中没有的变量使用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式