zoukankan      html  css  js  c++  java
  • javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ELResolver错误解决办法

    今天不用eclipse、myeclipse等开发工具,纯手写JSP页面(有点作死)时突然出现以前从来没遇到过的问题,报错如下:

    HTTP Status 500 - java.lang.NoClassDefFoundError: javax/el/ELResolver
    
    type Exception report
    
    message java.lang.NoClassDefFoundError: javax/el/ELResolver
    
    description The server encountered an internal error that prevented it from fulfilling this request.
    
    exception
    
    javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ELResolver
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:268)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
    root cause
    
    java.lang.NoClassDefFoundError: javax/el/ELResolver
        java.lang.ClassLoader.defineClass1(Native Method)
        java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
        java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        java.net.URLClassLoader.access$100(URLClassLoader.java:56)
        java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        java.security.AccessController.doPrivileged(Native Method)
        java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        java.lang.ClassLoader.loadClass(ClassLoader.java:299)
        sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
        java.lang.ClassLoader.loadClass(ClassLoader.java:299)
        java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        org.apache.jasper.runtime.JspFactoryImpl.getJspApplicationContext(JspFactoryImpl.java:209)
        org.apache.jsp.hellotag.hellotag_jsp._jspInit(hellotag_jsp.java:30)
        org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52)
        org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:164)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:340)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
    note The full stack trace of the root cause is available in the Apache Tomcat/6.0.45 logs.
    
    Apache Tomcat/6.0.45

    网上查了资料,总结了各种解决方案,到apache-tomcat/lib目录下,拷贝el-api.jar放到%JAVA_HOME%jrelibext下这种可以解决暂时的问题。

    有一个帖子说jsp-api.jar和servlet-api.jar这两个jar都加入到了jdk的classpath之中了,解决办法就是把jsp-api.jar删除;突然想到因为是手写变异java代码,所以把jsp-api.jar和servlet-api.jar同时加入到了%JAVA_HOME%jrelibext(这种操作方法其实和加入jdk的classpath效果是一样的),好吧,应该是包紊乱冲突的问题。

    解决方法总结:

      第一种:到apache-tomcat/lib目录下,拷贝el-api.jar放到%JAVA_HOME%jrelibext下;

      第二种:删掉%JAVA_HOME%jrelibext中的jsp-api.jar、servlet-api.jar,要编译代码的时候再拷贝进来,方法很笨,但是也是方法。

    如果在eclispe 或者 myeclipse中的出现如上情况的话,我没碰到过,要是碰到的话,应该也好解决:

      先检查tomcat是否有需要的el-api.jar包,一般肯定是有的;

      将%JAVA_HOME%jrelibext中的el-api.jar删掉(如果有的话);

      将集成环境帮你添加的包都删干净,自己一个一个手动添加需要的jar包,这样容易理清各个包的来路,看看到底是哪个包冲突了(一般都是冲突问题,贼烦)。

    最后看有很多童鞋说重装JDK,重装IDE,重装tomcat,好吧,最后实在不行再试试。

  • 相关阅读:
    Xcode安装Cocos2d-iphone
    Java最重要的21个技术点和知识点之JAVA基础
    Java最重要的21个技术点和知识点之JAVA面向对象
    Java最重要的21个技术点和知识点之JAVA集合框架、异常类、IO
    Java最重要的21个技术点和知识点之JAVA多线程、时间处理、数据格式
    Java最重要的21个技术点和知识点
    Linux 条件变量
    getcwd
    struct stat结构体简介
    SSL 程序设计初步介绍
  • 原文地址:https://www.cnblogs.com/ShawnYang/p/7452367.html
Copyright © 2011-2022 走看看