使用JSTL会导致更改后的deferredExpression错误 [英] Using JSTL causes deferredExpression error on change
问题描述
我最近删除了我的项目中的所有脚本,这个帖子的建议。但现在,如果我尝试改变我的一个观点,我得到一个延迟表达式的错误。为了摆脱错误,我只需要终止,然后重新启动项目。
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.
- 我们的JSTL wiki页面(了解您需要什么JAR)
- 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屋!