今天早上開始在Eclipse下學習struts,於是按照李興華老師的《struts入門視頻教程》一步一步地充滿快樂的學習,等把登陸程式寫完,開啟瀏覽器準備啟動並執行時候,奇怪的異常產生了,異常顯示500錯誤,如下:
| HTTP Status 500 - -------------------------------------------------------------------------------- type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: Failed to load or instantiate TagExtraInfo class: org.apache.struts.taglib.bean.CookieTei |
大概意思就是載入struts裡的.class類失敗,於是滿懷期望的到百度上去尋找,可以這樣說,大多數錯誤都可以在百度上面找到答案。但是,這次例外了。網上的答案幾乎都是刪除WEB-INF下lib下的jsp-api.jar包或是拷貝struts.jar包到Tomcat的lib目錄下,可是我下Eclipse建立的struts web工程,lib下面根本就沒有任何jar包,即lib是空檔案夾,一切的載入工作都是Eclipse自動載入的,視頻教程裡明顯運行出結果?但是我的為什麼不行呢?是我的程式寫錯了? 我到處問,包括軟體群裡,有好心人給我出各種注意,熱心幫我,在此表示深深的感激,可憐的是任然沒有得到解決。自學Java以來,第一次遇到網上找不到答案而自己又不知道問題所在的異常,頗受打擊。 為了找到答案,我開始懷疑自己寫的程式有問題,於是把原來的徹底刪除,再重複一次struts工程,可結果依舊,我大概排除了程式的問題。 拷貝struts.jar包到Tomcat下的lib目錄下,問題依舊。 很多人到此估計要懷疑自己Tomcat等的版本的問題,但是我不會,因為我的版本都是最新的,而且從經驗來看,凡是懷疑軟體有問題的人,都是因為他沒有發現問題所在,才開始懷疑軟體。自從我學Java以來,沒有一個問題是軟體造成的,都是程式或部署等出問題。 通過我的冷靜思考,我做了一個大膽的測試,而恰恰就是這樣一個測試,我把問題解決了,心裡無比高興,再次點燃了我的Java激情。 我不是拷貝struts.jar包,而是把D:/eclipse3.3/MyEclipse 6.0/eclipse/plugins/com.genuitec.eclipse.cross.easystruts.eclipse_6.0.1.zmyeclipse601200710/data/1.2/lib目錄下所有的jar包都拷貝到Tomcat的lib目錄下,即Struts1.2的所有jar包,而不光是struts.jar,總共6個jar包,其中包括了struts.jar包,再次運行,成功了。我又把6個jar包剪下到web工程的WEB-INF/lib下,運行同樣成功了。 我又喜有氣,喜的是成功了,氣的是我最喜歡的Eclipse表面上部署了struts1.2的所有jar包,卻不把他們載入到WEB-INF/lib下,導致出現異常。實在搞不懂MyEclipse是怎麼工作的,下面我在Eclipse中建立的struts項目,裡面明顯加了struts1.2的支援,卻還要我手動把包加到WEB-INF/lib下:
這個問題我整整搞了半天時間,感覺浪費了不少時間,在網上看到有些學員