<span style="font-family: Simsun; background-color: rgb(255, 255, 255);">想必大家在用Eclipse进行</span><span id="4_nwp" style="font-family: Simsun; background-color: rgb(255, 255, 255); width: auto; height: auto; float: none;"><a target=_blank id="4_nwl" href="http://cpro.baidu.com/cpro/ui/uijs.php?app_id=0&c=news&cf=1001&ch=0&di=128&fv=17&is_app=0&jk=43a66e5c3fb727ac&k=%B1%E0%B3%CC&k0=%B1%E0%B3%CC&kdi0=0&luki=4&n=10&p=baidu&q=v77y4_cpr&rb=0&rs=1&seller_id=1&sid=ac27b73f5c6ea643&ssp2=1&stid=0&t=tpclicked3_hc&tu=u2102575&u=http%3A%2F%2Fwww%2Eylzx8%2Ecn%2Fyingyongfuwuqi%2Fapache%2F999161%2Ehtml&urlid=0" target="_blank" mpid="4" style="color: rgb(1, 70, 108); text-decoration: none;"><span style="color: rgb(0, 0, 255); width: auto; height: auto;">编程</span></a></span><span style="font-family: Simsun; background-color: rgb(255, 255, 255);">时,经常会碰到这个问题。</span>
原因是jsp没有编译成功,所以找不到这个类。
在这要说明已下jsp和servlet的编译原理。
jsp
比如login.jsp:每一个jsp页面都会被web容器编译成一个java类,供web容器调用,并且声称html页面回馈给用户。
比如login.jsp,会被编译成login_jsp.java文件放在%tomcat_home%/work/Catalina/localhost/项目名称/org/apache/jsp/目录下;然后编译成login_jsp.class文件,同样放在该目录下。
jsp=java+html
servlet=java+out.print(html)
在第一次请求web服务器时,会执行如下过程:
1、客户端发送请求给web容器
2、web容器将jsp首先转译成servlet源码
3、web容器将servlet源码编译成.class文件
4、web容器执行.class文件
5、web容器将结果返回给客户端
所以第一次请求响应会慢点,以后的请求就会省略第2步和第3步。
-----------------------------------------------------
解决该问题万能三步骤:
1、仔细检查jsp相关路径设置,可能是路径没有写正确
2、仔细检查jsp中的代码,尤其是属性传递是否对应(对于struts),因为jsp代码错误的时候也是无法编译的
3、如果确定代码级没有问题,剩下的就是在启动tomcat时,注意清空一下tomcat/work目录。
错误日志如下: