Jsp 找不到EL RI表达式工厂

Jsp 找不到EL RI表达式工厂,jsp,jsf,el,Jsp,Jsf,El,我在我的应用程序中遇到以下异常 com.sun.faces.config.ConfigurationException: 它显示的是 容器的版本早于2.1,无法使用 查找EL-RI表达式的步骤 工厂, com.sun.el.ExpressionFactoryImpl。如果 不要使用JSP或EL RI,请确保 上下文初始化参数, com.sun.faces.expressionFactory,是 设置正确 如何在web.xml中设置EL详细信息异常表明需要使用JSP2.1。您需要确保您的web.x

我在我的应用程序中遇到以下异常

com.sun.faces.config.ConfigurationException: 它显示的是 容器的版本早于2.1,无法使用 查找EL-RI表达式的步骤 工厂, com.sun.el.ExpressionFactoryImpl。如果 不要使用JSP或EL RI,请确保 上下文初始化参数, com.sun.faces.expressionFactory,是 设置正确


如何在
web.xml

中设置EL详细信息异常表明需要使用JSP2.1。您需要确保您的
web.xml
声明为Servlet2.5或更高版本,并且您的servletcontainer支持它(Tomcat6、Glassfish 2、JBoss as 5等或更高版本)。JSP2.1与Servlet2.5齐头并进。正确的Servlet 2.5声明
web.xml
如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">

    <!-- Config here. -->

</web-app>


如果您使用的是较旧版本的servletcontainer,您实际上无法升级到至少与Servlet2.5兼容的servletcontainer,那么您需要首先让我们知道它是哪一个,以便我们可以发布更合适的答案/解决方法。

这是因为最新的el jar不在类路径中。 这对我也有用

(参考)请参考链接

将以下内容添加到Web.xml中,这对我很有用

<context-param>
    <param-name>com.sun.faces.expressionFactory</param-name>
    <param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>
<context-param>
    <param-name>com.sun.faces.expressionFactory</param-name>
    <param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>

com.sun.faces.expressionFactory
com.sun.el.ExpressionFactoryImpl

您可以尝试删除Web.xml中的以下内容,这对我很有用

<context-param>
    <param-name>com.sun.faces.expressionFactory</param-name>
    <param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>
<context-param>
    <param-name>com.sun.faces.expressionFactory</param-name>
    <param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>

com.sun.faces.expressionFactory
com.sun.el.ExpressionFactoryImpl

更新web.xml后,也会出现同样的错误。但是,我没有添加属性version=“2.5”。有必要吗?我只是从另一个来源复制粘贴。要么环境根本不支持Servlet 2.5,要么类路径被旧版本的库污染了。首先,您使用的是什么环境(servletcontainer/server)?Tomcat 6.0?Tomcat 5.5?玻璃鱼v2?玻璃鱼v3?那么剩下的唯一合理的原因就是你的类路径被弄乱了。永远不要触摸
JRE/lib
JRE/lib/ext
文件夹。您不应该在
Tomcat/lib
Webapp/WEB-INF/lib
中添加/删除特定于servlet容器的库。如果有,您需要清理它。这是一个特定于servletcontainer的库。您不应该需要更新它。它应该已经包含在Tomcat/lib中,并且在那里保持不变。如果在
Webapp/WEB-INF/lib
中有任何内容,则需要将其删除。查看新安装的Tomcat的
Tomcat/lib
,并将其内容与
Webapp/WEB-INF/lib
进行比较。如果webapp中有任何类似命名的库,如
jspapi
servlet api
等,则需要将它们全部从
webapp/WEB-INF/lib
中删除。它们应该由servletcontainer本身提供,而不是由您的Web应用程序提供。我首先尝试了BalusC技巧,但错误仍然不断出现。添加最新的el jar后,错误消失了。