1

错误是:

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)
    .....

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

4

2 回答 2

3

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

于 2012-04-07T11:16:59.660 回答
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 解决了该问题。

<dependency>
<groupId>de.odysseus.juel</groupId>
<artifactId>juel-impl</artifactId>
<version>2.2.6</version>
</dependency>

您还需要添加 <dependency> <groupId>de.odysseus.juel</groupId> <artifactId>juel-api</artifactId> <version>2.2.6</version> </dependency>

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

我希望这将有所帮助。

于 2014-01-30T05:05:49.683 回答