Http Status 500 - java.lang.NoClassDefFoundError:org/apache/jsp/login_jsp(wrong name:org/apache/jsp/Login_jsp)错误!
出现上述问题的原因是:在项目中修改了jsp页面的名字,比如登陆界面login.jsp 修改为Login.jsp 导致的错误.(小写l改为了大写L);
tomcat启动工作时,当浏览器第一次访问tomcat服务器的时候,tomcat安装目录work目录里把浏览器发送的这个jsp页面转化为.java文件.例如login.jsp会转化为login_jsp.java文件,在编译为login_jsp.class字节码文件.<可以说jsp页面本质是servlet,也就是被编译为java代码去执行>,编译后的login_jsp.class文件,通过classLoader类装进内存,为了响应客户端的请求工作.
产生的问题:如果我们在项目中单纯的将jsp页面的名字修改大小写的话,tomcat在work目录中是不会重新编译这个jsp文件的,所以work目录中还是原来小写/大写的同名jsp文件,导致tomcat给与客户端响应时在work目录中找不到对应相同的字节码文件.会报出上述错误(如果修改为不同的名称,tomcat会定时重新编译)仅仅限制与大小写的改变不同.
很多情况为了得到实时的jsp编译字节码文件,可以把catalina目录删除,重启tomcat,重新生成
当在项目中修改了jsp页面的名字,如将login.jsp改为Login.jsp,可能会导致HttpStatus500错误,因为Tomcat不会因大小写变更重新编译jsp。错误原因是Tomcat工作目录中仍保留旧的字节码文件。解决方案是删除catalina目录并重启Tomcat以获取新的编译文件。


被折叠的 条评论
为什么被折叠?



