今天不用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%\jre\lib\ext下这种可以解决暂时的问题。

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

解决方法总结:

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

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

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

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

  将%JAVA_HOME%\jre\lib\ext中的el-api.jar删掉(如果有的话);

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

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

最新文章

  1. 微信公众号开发之被逼学web服务端1-----使用SecureCRT连接Linux服务器
  2. SQL Server 存储(8/8):理解数据文件结构
  3. O(V*n)的多重背包问题
  4. Java Mybatis 传参方式
  5. Winpcap网络编程九之Winpcap实战,ARP协议获得MAC表及主机通信
  6. blog开篇
  7. GNU/Linux-MariaDB
  8. 跨主机使用 Rex-Ray volume - 每天5分钟玩转 Docker 容器技术(77)
  9. 关于使用连接器arm-linux-ld时指定链接地址的作用
  10. SQL Server学习之路(三):“增删改查”之“增”
  11. Running Spark Streaming Jobs on a Kerberos-Enabled Cluster
  12. [前端]AngularJS 簡易物件修改入門
  13. Parcelable encountered IOException writing serializable object
  14. 我的 Erdos 数是 4
  15. Java面试题和解答(二)
  16. CDOJ 1960 构造哈密顿路径
  17. 学习 ASP.NET Core 2.1:集成测试中使用 WebApplicationFactory
  18. Php基本类型——布尔类型
  19. eclipse打断点的调试
  20. Rancher的简单部署和使用

热门文章

  1. MapReduce编写的正确姿势
  2. ubuntu 18.04 修改 固定ip
  3. casper爬虫操作记录
  4. 【研究】Weblogic XMLDecoder反序列化漏洞(CVE-2017-10271)
  5. 使用dd命令写iso文件到u盘
  6. Knime读取Jason数据
  7. spark第二篇:Application Submission Guide
  8. 自动化交互expect
  9. PyCharm常见用法
  10. android检查网络连接状态的变化,无网络时跳转到设置界面