開發日誌:使用MyEclipse開發JavaWeb,無論怎麼改Java代碼都不生效,Tomcat報ClassNotFoundException錯誤

今天開發遇到這個奇葩的問題,弄了很久,開始的時候一直以爲代碼出錯,後來在新增加的判斷處加入了斷點,發現

if( obj ==null){

   //代碼...

}

obj肯定爲nul的情況下,竟然也不會執行 //代碼  裏面的內容,BUG直接跳出判斷,重啓後都不行,後來clean了一下,更奇葩的問題出現了:Tomcat啓動報錯誤【java.lang.ClassNotFoundException: com.gdcy.servlet.CheckSessionServlet


後來跑到WebRoot\WEB-INF\classes  發現classes的文件夾竟然是空的,那麼造成上述問題的原因找到了:代碼不改變,是因爲MyEclipse沒有更新class的內容,而clean之後,由於不明原因的錯誤,MyEclipse清空了classes裏的class文件,導致加載至Tomcat的web項目下的classes也爲空,因此啓動報java.lang.ClassNotFoundException: com.gdcy.servlet.CheckSessionServlet


那麼解決問題

說起來classes爲空已經是這周內第二次遇到的問題了,第一次原因是svn導入項目時,出現無論怎麼編譯,classes都爲空,且不報錯,弄了很久,最後在朋友的幫助下,找到了原因,在導入的包中,有一個jar包是missing的,最後在

在Order and Export找到帶紅叉的包,在Libraries將其刪除

而這次的情況比較奇葩,屬於下面的第6點

我先刪除JRE System Library

然後再

選擇Add Library,選擇JRE System Library

Next

完成


這時MyEclipse開始編譯,發現classes的文件終於出現了大哭,很小心地去clean,正常了發火


這是網上找到的不少造成原因和解決方法

MyEclipse不編譯解決

1. 確保project->build automatically已經被選上

2. 如果選上了,也不好使,使用這一招: project->clean..->選第2個clean select project, 

勾上start build immediatelly MyEclipse

3.刪除現在的項目,提前設置好編譯文件輸出路徑,重新導入源文件,設置

MyEclipse爲保存時編譯,然後在保存的時候就可以自動編譯了

 4.如果項目裏引了某個不用的jar包,而那個包又被你刪了,就會出現不報錯但怎麼也編譯不出來class文件的情況,可以把所有包都刪除,然後一個一個的再引入(需要的),

不要一下子把所有包都引入來,沒用的可能會引起不良後果. 

5. 想刪掉某個class文件重新生成,刪除class文件後,但classes目錄下的文件夾被其它程序打開,比如Total Commander。此時編譯也不會通過,在problems下可能會提示“con''t delete classes „„”。關掉其它程序重新編譯即可。

6.還有種情況是remove掉 JRE System Library,重新導入即可編譯。但是什麼原因導致的還不清楚。

7.把build path中所有包都remove掉。然後又add jars,add libraries把需要的加進去,居然又開始編譯了。。。

 

8.project->properties->java build path->source->.../WEB-INF/src的output folder不要默認,編輯讓它指向../WEB-INF/classes  然後重新點擊build工程即可自動編譯。 

MyEclipse

9.再就是最重要的要看工程下面是否缺少了work目錄,由於CVS控制時不把work加如版本,所以checkout後沒有這個目錄,要手工加上有的工程就能自動編譯了

"Problems"標籤,如果裏面說缺少work目錄,手工加上,然後刷新項目就可以了. 還有個jar和path的問題最終解決辦法爲選項目——右鍵——屬性——java build path——order and export將所有的複選框選中


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章