java.lang.NoSuchMethodError:javax.el.E​​LContext.notifyBeforeEvaluation(Ljava / lang / String;)V

时间:2013-11-15 19:27:24

标签: google-app-engine jsf el jsf-2.2

我正在尝试让JSF 2.2在GAE 1.8.7上运行。我正在学习本教程:http://java.wildstartech.com/Java-Platform-Enterprise-Edition/JavaServer-Faces/javaserver-faces-22/configuring-jsf-22-to-run-on-the-google-app-engine-using-eclipse

当我在本地运行它时,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) 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存储库中的javax-faces.2.2.0.jarjavax-el.3.0.0.jar

1 个答案:

答案 0 :(得分:0)

如果你真的不需要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上有一个starter template可以帮助你开始。