一晃,一个月又完了。中午利用午休的时间,记录个我最近开发遇到的异常。
下面是异常提示信息:
严重: Servlet.service() for servlet jsp threw exception java.lang.NoClassDefFoundError: org/apache/jsp/Index_jsp (wrong name: org/apache/jsp/index_jsp) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.defineClass(ClassLoader.java:616) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:134) at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66) at org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:618) at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:144) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:662)
产生这个异常的时候,我是正常操作,停止Tomcat服务,然后开始编辑代码。当我的代码编辑完成后,在Eclipse上也没有发现编写上的错误。然后开始启动Tomcat,就开始报这个异常,启动失败。
由于个人习惯,发现异常就会习惯性的看异常提示信息。看到这个异常提示信息,顿时懵了。因为我已经把index.jsp重命名了,由于以前遇到过部署后,没有进行代码编译的情况,根据我目前的经验看好像是代码没有编译造成的。所以清理了项目,重新部署了次。蛋疼的是,当我清理重新部署后,启动服务还是会报同样的错误。这我直接就闹不住了。
我直接找到项目在Tomcat下的部署路径,想看看那些文件没有编译。发现文件都编译正常。点了后退到上级。到work里面,在里面发现和项目对应的文件,这里面的文件没有随着我的改动而改动。然后我直接把整个work下对应的文件夹给删了。重启解决,就可以正常启动。
由于个人研究java深入程度有限,所以也没有闹明白这个是怎么导致的。但是,好在找到了解决办法,搞定了这个蛋疼的问题。
解决办法:把tomcat/work中对应的文件删除,重新运行启动服务器就OK了。懒得找或者怕折腾的话,就直接把work下的所有文件和文件夹一起删除就可以了。
使用Eclipse的同志们,也可以在Service中选中 Tomcat服务器,右击选择 [Clean Tomcat Work Directory]选择即可。如下图

评论