4

运行时错误:

index.jsp(12,8) PWC6038: "${sqlStatement == null}" contains invalid expression(s):
javax.el.ELException: Unable to find ExpressionFactory of type:
    org.apache.el.ExpressionFactoryImpl
    org.apache.jasper.JasperException: : javax.el.ELException: Unable to find ExpressionFactory of type: org.apache.el.ExpressionFactoryImpl

问题:

  1. 我将如何调试这个?
  2. 找不到类型的 ExpressionFactory:org.apache.el.E​​xpressionFactoryImpl <-- 这是什么意思?

这就是我所拥有的

  • NetBeans IDE 7.3
  • 雄猫 7.0
  • MySql 连接

这是 Murach 书中的一个简单的 sql 网关

索引.jsp

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 

    <c:if test="${sqlStatement == null}">
        <c:set var="sqlStatment" value="select * from User" />
    </c:if>

    <h1>The SQL Gateway</h1>
    <p>Enter an SQL statement and click the execute button. Then, information about the<br/>
    statement will appear at the bottom of this page.
    </p>

    <p><b>SQL Statement:</b></p>

    <form action="SqlGateway" method="POST">

        <textarea name="sqlStatement" cols="60" rows="8">${sqlStatement}</textarea>
        <br/><br/>
        <input type="submit" value="Execute">

    </form>

    <p><b>SQL result:</b></p>
    <p>${sqlResult}</p>

web.xml

    <servlet>
    <servlet-name>SqlGatewayServlet</servlet-name>
    <servlet-class>sql.SqlGatewayServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>SqlGatewayServlet</servlet-name>
    <url-pattern>/SqlGateway</url-pattern>
</servlet-mapping>

我认为 servlet 没有任何问题,但如果您需要我发布它,请告诉我。

4

1 回答 1

2

我的 el-api.jar 文件有问题吗

webapp 的/WEB-INF/lib. Servletcontainer 特定的 JAR 文件应该已经由 servlet-container 本身提供。

查看 Tomcat 的/lib文件夹,它已经提供了内部库、JSP、Servlet 和 EL 库。你不需要通过你的 webapp 提供它们中的任何一个。如果您仍然这样做,则运行时类路径可能会以灾难告终,因为存在重复的不同版本库。在您的特定情况下,您可能通过您的 web 应用程序提供了一个随机下载的 EL API,它与在运行时类路径中找到的 EL impl 不匹配,因此无法通过抽象工厂模式找到正确的 impl。

因此,如果您在 中删除特定于 servletcontainer 的 JAR /WEB-INF/lib,那么一切都会好起来的。/WEB-INF/lib应该包含特定于 webapp 本身并且 servletcontainer 尚未提供的库。

也可以看看:

于 2013-07-31T20:36:08.833 回答