包含无效表达式:javax.el.ELException:

包含无效表达式:javax.el.ELException:,java,jsp,jstl,el,Java,Jsp,Jstl,El,运行时出错: 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.ELExce

运行时出错:

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
问题:

  • 我将如何调试这个
  • 找不到类型为org.apache.el.ExpressionFactoryImpl的ExpressionFactory 我的el-api.jar文件可能有问题吗

    您的webapp的
    /WEB-INF/lib
    中不应该有任何特定于servletcontainer的JAR文件。Servletcontainer特定的JAR文件应该已经由servlet容器本身提供

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

    因此,如果您在
    /WEB-INF/lib
    中去掉了特定于servletcontainer的JAR,那么一切都应该很好。
    /WEB-INF/lib
    应仅包含特定于webapp本身且servletcontainer尚未提供的

    另见:

    本书中引用的Tomcat版本是什么?看起来EL库有问题。您是使用maven开发这个项目还是将其创建为web项目?Tomcat6.x。谢谢你replying@LuiggiMendoza它是一张网project@RomanC你的意思是什么?应用程序在Tomcat6和7上都应该运行良好。是的,谢谢。当我提到el-api.jar文件时,我正在查看Tomcat的lib文件夹。我的/WEB-INF/Lib中没有el-api.jar。我怀疑罐子有问题的原因是。。。嗯,这只是我现在遇到的一个奇怪的问题。。。。但谢谢你的意见…真奇怪。至少,事实是,您的运行时类路径是一团乱。您是否曾经摆弄过松散的servletcontainer特定JAR文件?例如,在JDK/JRE的
    /lib
    /lib/ext
    中不小心试图修复编译错误?我希望我这样做,那么我至少知道我做了坏事。。。。我要重新安装tomcat和我的IDE,看看它是否能解决问题。。。非常感谢。
        <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>