Google app engine java.lang.NoSuchMethodError:javax.el.ELContext.notifyBeforeEvaluation(Ljava/lang/String;)V
我试图让JSF2.2在GAE1.8.7上运行。我将遵循本教程: 当我在本地运行它时,index.jsf页面呈现良好 但是,当我将其部署到GAE时,尽管普通servlet运行良好,index.jsf在GAE日志中显示了HTTP 505错误,如下所示:Google app engine java.lang.NoSuchMethodError:javax.el.ELContext.notifyBeforeEvaluation(Ljava/lang/String;)V,google-app-engine,jsf,el,jsf-2.2,Google App Engine,Jsf,El,Jsf 2.2,我试图让JSF2.2在GAE1.8.7上运行。我将遵循本教程: 当我在本地运行它时,index.jsf页面呈现良好 但是,当我将其部署到GAE时,尽管普通servlet运行良好,index.jsf在GAE日志中显示了HTTP 505错误,如下所示: 2013-11-15 11:23:42.578 /index.jsf 500 533ms 0kb Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
2013-11-15 11:23:42.578 /index.jsf 500 533ms 0kb Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36 module=default version=1 W
2013-11-15 11:23:42.573 /index.jsf java.lang.NoSuchMethodError: javax.el.ELContext.notifyBeforeEvaluation(Ljava/lang/String;)V
at com.sun.el.lang.EvaluationContext.notifyBef
2013-11-15 11:23:42.577 Uncaught exception from servlet java.lang.NoSuchMethodError: javax.el.ELContext.notifyBeforeEvaluation(Ljava/lang/String;)V
at com.sun.el.lang.Evalua
我使用的是maven repository中的javax-faces.2.2.0.jar和javax-el.3.0.0.jar。如果您真的不需要el 3.x功能,那么我建议移动到2.x版本,然后在web.xml文件中指定它作为上下文参数:
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>
上述声明将确保您使用的是与代码一起提供的EL版本,而不是GAE/J容器提供的版本
不要忘记在您的库中也包括EL实现jar
p、 s:如果有什么帮助的话,我在GitHub上有一个可以帮助您入门的工具。顺便问一下,GAE使用的EL版本是什么?这与我的代码不兼容。请查看GAE/J SDK中的共享库。与Servlet和jspjar一起,您将看到EL-jar文件。如果我没有弄错的话,这就是ApacheEL实现。