一晃,一个月又完了。中午利用午休的时间,记录个我最近开发遇到的异常。

下面是异常提示信息:

    严重: 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]选择即可。如下图
 20140731133353

 

标签: java.lang.NoClassDefFoundError, 工作异常记录, 开发异常, java.lang.NoClassDefFoundError: org/apache/jsp/Index_jsp

添加新评论