<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目錄。
錯誤記錄檔如下: