• java.lang.NoClassDefFoundError: javax/el/ELException


    在maven中配置以下依赖:

           <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>

    在resin-3.0.28中运行,报以下错误:

    Servlet.service() for servlet jsp threw exception
    java.lang.NoClassDefFoundError: javax/el/ELException

    原因是容器不支持JSTL1.2,换成以下依赖就好了:

            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.1.2</version>
            </dependency>

    Tomcat中也有同样的问题

    Tomcat6   JSP2.1 / Servlet2.5 / JSTL2.0

    Tomcat5   JSP2.0 / Servlet2.4 / JSTL1.1

    Tomcat4   JSP1.2 / Servlet2.3 / JSTL1.0

    resin-3.0.28 JSP2.0 / Servlet2.4 / JSTL1.1

    Tomcat5与Tomcat6的EL冲突,JSTL的版本问题
    Servlet.service() for servlet jsp threw exception
    java.lang.NoClassDefFoundError: javax/el/ELException
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2365)
    at java.lang.Class.getDeclaredMethods(Class.java:1763)
    at java.beans.Introspector$1.run(Introspector.java:1259)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.beans.Introspector.getPublicDeclaredMethods(Introspector.java:1257)
    at java.beans.Introspector.getTargetMethodInfo(Introspector.java:1125)
    at java.beans.Introspector.getBeanInfo(Introspector.java:383)
    at java.beans.Introspector.getBeanInfo(Introspector.java:155)
    at java.beans.Introspector.getBeanInfo(Introspector.java:216)
    at java.beans.Introspector.<init>(Introspector.java:364)
    at java.beans.Introspector.getBeanInfo(Introspector.java:155)
    at org.apache.jasper.compiler.Generator$TagHandlerInfo.<init>(Generator.java:3673)
    at org.apache.jasper.compiler.Generator$GenerateVisitor.getTagHandlerInfo(Generator.java:2092)
    at org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1573)
    at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1441)
    at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
    at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
    at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)

    这个问题应该是出在JSTL的支持上,通过查看,原来系统使用了JSTL1.2。

    JSTL1.2

    The JSTL 1.2 Maintenace Release aligns with the Unified Expression Language (EL) that is being delivered as part of the JavaServer Pages (JSP) 2.1 specification。JSTL 1.2 is part of the Java EE 5 platform. (from http://java.sun.com/products/jsp/jstl/)

    JSTL1.1

    Jakarta Taglibs hosts the Standard Taglib 1.1, an implementation of the JSP Standard Tag Library (JSTL), version 1.1, which was developed under the Java Community Process.
    NOTE: Standard-1.1 (JSTL 1.1) requires a JSP container that supports the Java Servlet 2.4 and JavaServer Pages 2.0 specifications. Jakarta Tomcat 5 supports the new specifications. The Standard-1.1 taglib has been tested with Tomcat 5.0.3.

    JSTL1.0
    Standard-1.0 (implementation of the JSTL 1.0 specification) requires a JSP container that supports the Java Servlet 2.3 and JavaServer Pages 1.2 specifications. Jakarta Tomcat 4 supports these specifications. The Standard 1.0 taglib has been tested with Tomcat 4.1.24. (from http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html)

    Tomcat6 实现了servlet 2.5 和JSP2.1的规范,可以支持JSTL1.2;

    而Tomcat5实现了 servlet 2.4 和JSP2.0的规范,只能支持JSTL1.1

    所以,只要使用JSTL1.1(standard-1.1.jar和jstl-1.1.jar)替换JSTL1.2(jstl-1.2.jar)即可在Tomcat5下正常运行!

    另外,web.xml必须指定使用servlet 2.4 和JSP2.0的规范:
    <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">



    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gtuu0123/archive/2009/12/05/4946452.aspx

  • 相关阅读:
    【Android N 7.1.1】 屏幕亮和灭的处理地方
    Android 测量调用方法耗时的方法
    【Android M】获取屏幕锁定的相关信息:“无”,“滑动”,“PIN码”,"图案","密码"
    【Android N 7.1.1】 ActivityManagerService 获取cpu状态
    Android 判断当前是否在跑monkey测试
    【Android N 7.1.1】 锁屏之上显示Toast
    【Android N 7.1.1】 处于锁屏界面时可以转屏
    【Android N 7】使用量统计usagestats
    #### 批处理命令 获取当前目录下所有文件的路径
    Linux命令 swap:内存交换空间
  • 原文地址:https://www.cnblogs.com/harbin1900/p/8480991.html
Copyright © 2020-2023  润新知