错误是:
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?
答案 0 :(得分:3)
看起来你的类路径中有两个可与之竞争的EL API,tomcat和你应用程序中的另一个。您的war文件不得包含el-api.jar
或juel-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的一部分。
我希望这会有所帮助。