1. 程式人生 > >java.lang.ClassNotFoundException: org.apache.jsp.login_jsp

java.lang.ClassNotFoundException: org.apache.jsp.login_jsp

<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容器將原始碼編譯成.class檔案

4、web容器執行.class檔案

5、web容器將結果返回給客戶端

所以第一次請求響應會慢點,以後的請求就會省略第2步和第3步。

-----------------------------------------------------

解決該問題萬能三步驟:

1、仔細檢查jsp相關路徑設定,可能是路徑沒有寫正確

2、仔細檢查jsp中的程式碼,尤其是屬性傳遞是否對應(對於),因為jsp程式碼錯誤的時候也是無法編譯的

3、如果確定程式碼級沒有問題,剩下的就是在啟動tomcat時,注意清空一下tomcat/work目錄。

錯誤日誌如下: