由于带有ExpressionFactoryImpl的ClassCastException,无法在JSP页面中使用JSTL,包含juel-impl jar的项目

时间:2012-04-05 15:40:24

标签: eclipse jsp maven jstl

错误是:

SEVERE: Servlet.service() for servlet [jsp] in context with path [] threw exception      [Unable to compile class for JSP] with root cause
java.lang.ClassCastException: de.odysseus.el.ExpressionFactoryImpl cannot be cast to javax.el.ExpressionFactory
at javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:180)
at javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:107)
at org.apache.jasper.compiler.PageInfo.<init>(PageInfo.java:79)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:110)
    .....

该项目正在使用war覆盖,其中覆盖的项目具有juel-impl jar,这是使用shindig所必需的。有没有什么方法可以在子项目jsp页面中使用jstl?

2 个答案:

答案 0 :(得分:3)

看起来你的类路径中有两个可与之竞争的EL API,tomcat和你应用程序中的另一个。您的war文件不得包含el-api.jarjuel-api.jar。确保排除这些依赖项。

答案 1 :(得分:1)

Juel 2.1.3 jar是以下Jars juel-impl.jar,juel-spi.jar和juel-api.jar的组合。 当我们在pom中包含juel 2.1.3 jar并在tomcat 7中部署时,我们遇到了同样的问题。

通过从pom中删除Juel 2.1.3并仅添加juel-impl来解决该问题。

&LT;依赖性&GT;
        &LT;&的groupId GT; de.odysseus.juel&LT; /&的groupId GT;
        &LT; artifactId的&GT; JUEL-IMPL&LT; / artifactId的&GT;
        &LT;版本&GT; 2.2.6&LT; /版本&GT;
    &LT; /依赖性&GT;

你还需要添加       &LT;依赖性&GT;     &LT;&的groupId GT; de.odysseus.juel&LT; /&的groupId GT;     &LT; artifactId的&GT; JUEL-API&LT; / artifactId的&GT;     &LT;版本&GT; 2.2.6&LT; /版本&GT;       &LT; /依赖性&GT;

juel 2.1.3 jar包含javax / el接口,也是jsp-api jar的一部分。

我希望这会有所帮助。