我想骂人!!!!!!!!!!!!!!!!!
HTTP Status 500 -type Exception report
message
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:717)
root cause
java.lang.NoClassDefFoundError: javax/el/ELResolver java.lang.ClassLoader.defineClass1(Native Method) java.lang.ClassLoader.defineClass(Unknown Source) java.security.SecureClassLoader.defineClass(Unknown Source) java.net.URLClassLoader.defineClass(Unknown Source) java.net.URLClassLoader.access$000(Unknown Source) java.net.URLClassLoader$1.run(Unknown Source) java.security.AccessController.doPrivileged(Native Method) java.net.URLClassLoader.findClass(Unknown Source) java.lang.ClassLoader.loadClass(Unknown Source) java.lang.ClassLoader.loadClass(Unknown Source) sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) java.lang.ClassLoader.loadClass(Unknown Source) java.lang.ClassLoader.loadClass(Unknown Source) java.lang.ClassLoader.loadClassInternal(Unknown Source) org.apache.jasper.runtime.JspFactoryImpl.getJspApplicationContext(JspFactoryImpl.java:209) org.apache.jsp.index_jsp._jspInit(index_jsp.java:23) org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52) org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:159) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329) 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:717)
root cause
java.lang.ClassNotFoundException: javax.el.ELResolver java.net.URLClassLoader$1.run(Unknown Source) java.security.AccessController.doPrivileged(Native Method) java.net.URLClassLoader.findClass(Unknown Source) java.lang.ClassLoader.loadClass(Unknown Source) java.lang.ClassLoader.loadClass(Unknown Source) java.lang.ClassLoader.loadClassInternal(Unknown Source) java.lang.ClassLoader.defineClass1(Native Method) java.lang.ClassLoader.defineClass(Unknown Source) java.security.SecureClassLoader.defineClass(Unknown Source) java.net.URLClassLoader.defineClass(Unknown Source) java.net.URLClassLoader.access$000(Unknown Source) java.net.URLClassLoader$1.run(Unknown Source) java.security.AccessController.doPrivileged(Native Method) java.net.URLClassLoader.findClass(Unknown Source) java.lang.ClassLoader.loadClass(Unknown Source) java.lang.ClassLoader.loadClass(Unknown Source) sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) java.lang.ClassLoader.loadClass(Unknown Source) java.lang.ClassLoader.loadClass(Unknown Source) java.lang.ClassLoader.loadClassInternal(Unknown Source) org.apache.jasper.runtime.JspFactoryImpl.getJspApplicationContext(JspFactoryImpl.java:209) org.apache.jsp.index_jsp._jspInit(index_jsp.java:23) org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52) org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:159) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329) 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:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.
这个问题困扰了我,但是现在找到了解决的办法,尽管如此,还是无法平息那一刻产生的怒气!
这原本就应该是一个很简单的问题,可是居然又那么巧合!
好,事情是这样的。我的笔记本电脑上装了netbeans6.1、myeclipse7.0M2,tomcat是上次装的,当时为了能在netbeans上使用tomcat,弄了很久,后来发现需要为tomcat添加环境变量,在netbeans中设置服务器,才能在netbeans中使用tomcat。tomcat是能用的,tomcat没坏!
接着,用了一段时间,我想在myeclipse上编写jsp,因为在实验室时用了myeclipse来写,所以,回来后想用myeclipse继续编写。一如既往地导入,编译,运行,出错了,如上所示,有异常!本能的上网搜索,发现了N种解释:1、tomcat坏了,换一个(不可能);2、tomcat下缺包,需加入(加入后问题依旧);3、未在myeclipse中设置好服务器,事实上myeclipse中已经有了内置的tomcat,未设置又如何呢?不过我还是照说明设置了,问题依旧;4、环境变量未按标准设置(居然有人说%CATALINA_HOME%中的“CATALINA_HOME”拼错一个字母都不行,荒唐……)。
其实,当天我是没弄出来的。后来回家又弄了弄,发现居然没事。我家装的是同一个myeclipse,而且没装tomcat,所以用的是内置tomcat,环境变量也没设,包括jdk的。但却可以运行程序。很费解。
回学校后,我又试了试,其中是按照网上一篇文章试的,试着试着终于发现问题了,原来我在给tomcat设置jdk时出错了,点击window——preferences——tomcat6.x——JDK后发现要添加jdk的,但是当时点add后,myeclipse里提示要添加的是JRE home!!!!于是我当时就添加了JRE的home路径,因为我安装时是jdk、jre都有安装的!!!!有心一点的话点cancel,看看刚才的界面里居然有note,看看note1写了些什么:JDK Virtual Machine must specify a full JDK installation.Specifying a JRE will result in a startup exception.怒,里面写着jre,外面写着jdk,乱七八糟,直接说输入JDK HOME不就行了,怒!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
怒!!!!!!!这里写着jdk,进去提示jre,填了jre肯定错,但是它又提示jre home,那些输入了jre home路径的人就白忙活了。怒!!!!!!
在提示输入jre home路径的地方输入jdk home路径后,一切正常了(注:tomcat安装的路径之前指定好了)。
或许tomcat需要环境变量,但是内置的绝对不需要!难道tomcat下会缺包,就算真的缺包,补充就行了。或许怕jdk内缺包更多一点。
怒气未消~~~~~~~该死的myeclipse,浪费我时间!!!!!!!!!!
结尾了,不想把不好的情绪带给大家,这里在附上一个地址,也是关于这个问题的,不是我写的,但是写得很全面,大家可以参考一下:http://www.cnblogs.com/pricks/archive/2009/05/28/1491392.html
最后还是提醒一下大家,jdk里面已经包了jre了,仔细一点的话,就去安装目录里就可以看到了。不要把jdk home填成jre home。