使用JSTL会导致更改后的deferredExpression错误 [英] Using JSTL causes deferredExpression error on change

查看:99
本文介绍了使用JSTL会导致更改后的deferredExpression错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我最近删除了我的项目中的所有脚本,这个帖子的建议。但现在,如果我尝试改变我的一个观点,我得到一个延迟表达式的错误。为了摆脱错误,我只需要终止,然后重新启动项目。

I recently removed all scriptlets on my project as advised by this post. But now, if I try and make a change to one of my views, I get a deferredExpression error. To get rid of the error, I simply have to terminate, then restart the project.

这里发生了什么? eclipse不能在飞行中编译jstl吗?有什么我可以改变,所以我不需要重新部署每次更改?

What is going on here? Is eclipse not able to compile jstl on the fly? Is there something I can change so I don't have to redeploy every time I make a change?

堆栈跟踪

java.lang.NoSuchFieldError: deferredExpression
    at org.apache.taglibs.standard.tag.common.core.ForEachSupport.release(ForEachSupport.java:212)
    at org.apache.jasper.runtime.TagHandlerPool.release(TagHandlerPool.java:166)
    at org.apache.jsp.l.profile_jsp._jspDestroy(profile_jsp.java:114)
    at org.apache.jasper.runtime.HttpJspBase.destroy(HttpJspBase.java:88)
    at org.apache.jasper.servlet.JspServletWrapper.destroy(JspServletWrapper.java:428)
    at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:139)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    at com.google.appengine.tools.development.PrivilegedJspServlet.access$101(PrivilegedJspServlet.java:23)
    at com.google.appengine.tools.development.PrivilegedJspServlet$2.run(PrivilegedJspServlet.java:59)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.google.appengine.tools.development.PrivilegedJspServlet.service(PrivilegedJspServlet.java:57)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
    at com.google.appengine.tools.appstats.AppstatsFilter.doFilter(AppstatsFilter.java:141)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.appspot.MySite.Controller.FacebookLogin.doFilter(FacebookLogin.java:140)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
    at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:351)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:326)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)


推荐答案


java.lang.NoSuchFieldError:deferredExpression
at apache.taglibs.standard.tag.common.core.ForEachSupport.release(ForEachSupport.java:212)

java.lang.NoSuchFieldError: deferredExpression
at apache.taglibs.standard.tag.common.core.ForEachSupport.release(ForEachSupport.java:212)

您的类路径被不同的JSTL实现版本污染。这个特殊的例外意味着你同时拥有JSTL 1.2的 jstl-1.2.jar 文件和 standard.jar 文件JSTL 1.1或1.0在类路径。此字段在JSTL 1.2中引入,并且两个JAR文件中都存在 ForEachSupport 类。显然,在某些时候,已经加载并使用了 standard.jar 之一,而在JVM内存中仍然拥有JSTL 1.2 API。

Your classpath is polluted with different JSTL implementation versions. This particular exception means that you've both the jstl-1.2.jar file of JSTL 1.2 and the standard.jar file of JSTL 1.1 or 1.0 in the classpath. This field is introduced in JSTL 1.2 and the ForEachSupport class is present in the both JAR files. Apparently at some point the one of standard.jar is been loaded and used while still having the JSTL 1.2 API in JVM memory.

解决方案是删除 standard.jar 。您根本不需要JSTL 1.2。

The solution is to remove the standard.jar. You don't need it for JSTL 1.2 at all.

  • Our JSTL wiki page (to learn about what JARs you need)

更新:根据评论,您实际需要删除 jstl-1.2.jar 以及因为Servlet 2.5兼容版本的GAE / Jetty显然已经随附了JSTL 1.1。这与JSTL 1.2有冲突。在你的webapp。

Update: as per the comments, you actually need to remove the jstl-1.2.jar as well, because the Servlet 2.5 compatible version of GAE/Jetty apparently already ships with JSTL 1.1 out the box. This was conflicting with JSTL 1.2. in your webapp.

这篇关于使用JSTL会导致更改后的deferredExpression错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆