JSTL Google App Engine问题

时间:2010-07-01 11:59:04

标签: java google-app-engine jsp

我的问题是,当达到<c:if标记时,会出现以下问题。

我在谷歌应用引擎上使用Spring。

java.lang.AbstractMethodError: javax.servlet.jsp.PageContext.getELContext()Ljavax/el/ELContext;
    at javax.servlet.jsp.jstl.core.LoopTagSupport.unExposeVariables(LoopTagSupport.java:620)
    at javax.servlet.jsp.jstl.core.LoopTagSupport.doFinally(LoopTagSupport.java:354)
    at org.apache.jsp.WEB_002dINF.views.templates.master_005fb_jsp._jspx_meth_c_forEach_0(master_005fb_jsp.java:544)
    at org.apache.jsp.WEB_002dINF.views.templates.master_005fb_jsp._jspx_meth_c_if_0(master_005fb_jsp.java:482)
    at org.apache.jsp.WEB_002dINF.views.templates.master_005fb_jsp._jspService(master_005fb_jsp.java:314)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)

4 个答案:

答案 0 :(得分:2)

java.lang.AbstractMethodError表示当前运行时类路径中某些(抽象)API中声明的错误消息中提到的抽象方法在当前的具体实现中缺失运行时类路径。

在这种情况下,它是javax.servlet.jsp.PageContext.getELContext()方法。根据{{​​3}},这个抽象方法在JSP 2.1中引入。具体实现是您当前正在使用的服务器

这可能是由于在您的webapp的运行时类路径中有jsp-api.jar不同的服务器make / version支持JSP 2.1,很可能是在/WEB-INF/lib文件夹中,而您正在使用的GAE服务器不实现JSP 2.1。在webapp的运行时类路径中删除所有特定于服务器的库。他们不属于那里。它们属于(并且已经)在服务器库中。

答案 1 :(得分:1)

尝试使用旧版本的JSTL。看起来你正在使用1.2,你可能应该使用1.1。

答案 2 :(得分:0)

您不必将任何jstl库添加到web-inf / lib目录,只需运行

即可

答案 3 :(得分:0)

很可能是库版本问题。 Google AppEngine提供了一个默认的JSTL库,您不必在WEB-INF / lib目录中包含自己的库。只需删除可能已添加到该目录的库,然后清理构建以再次测试。