java.lang.NoClassDefFoundError: javax/el/ELException

來源:互聯網
上載者:User

在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">

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.