jetty web javax.el.ExpressionFactory.newInstance()Ljavax/el/ExpressionFactory

来源:互联网 发布:原始股 购买 知乎 编辑:程序博客网 时间:2024/06/01 07:22

 javax.el.ExpressionFactory.newInstance()Ljavax/el/ExpressionFactory

转自:http://www.blogjava.net/aoxj/archive/2012/05/25/379086.html
今天用jetty做嵌入式web container,来做web项目的integration test,结果发现出现在渲染使用EL表达式的jsp页面时出现异常:

    javax.el.ExpressionFactory.newInstance()Ljavax/el/ExpressionFactory;
 检查了一下,发现javax.el.ExpressionFactory.newInstance()这个方法是EL2.2版本之后才有的方法,而在EL2.1之中是没有这个方法的,问题很明显:org.apache.jasper中试图调用2.2版本的EL,当时提供的EL的版本是2.1版本,所以解决的方式无非就是两个,要不降低org.apache.jasper的版本,要不提升el的版本。考虑到现在使用的jetty已经是最新的版本8.1.2.v20120308,因此提升EL的版本为2.2更为合适。

     修改pom.xml文件,将
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
     修改为2.2版本,上述问题顺利解决,之前的el异常不再出现。
Caused by: java.lang.NoSuchMethodError: javax.el.ExpressionFactory.newInstance()Ljavax/el/ExpressionFactory;at org.apache.jasper.compiler.JspUtil.getExpressionFactory(JspUtil.java:1189)


0 0