2012-12-17 22 views
0

在調試tomcat 6時,我們發現在Tomcat和Eclipse中部署兩個類是不同的。 Tomcat中的部署會創建一個NullPOinterException,Eclipse源不會。事情是,如果我們用startup.sh啓動Tomcat,它每次都會產生錯誤!如果我們使用catalina jpda start啓動,將Eclipse連接到它,它會產生AS LONG錯誤,因爲我們不會更改導致此錯誤的某個屬性的值。在我們更改了這個值之後,即使我們刪除了部署文件夾和工作目錄,並在調試模式下重新啓動,錯誤也沒有了。沒有例外。但是,如果我們再次用startup.sh重新啓動,錯誤再次出現。Eclipse Tomcat遠程調試:Eclipse中的源是否緩存在某處?

所以,我的問題是,Tomcat或Eclipse緩存/存儲來自Eclipse某處的源與遠程調試器一起使用?

謝謝!

回答

0

當你調試應用程序時,Eclipse(我相信像IDEA和Netbeans等其他人)在服務器上「保存」取代正在運行的代碼。這意味着當在Eclipse中更改一個類時,將其保存並在服務器上進行更改。也稱爲代碼替換。我也相信tomcat會記錄catalina.out中的更改
但是,當您重新啓動服務器時,它會獲取早期部署的類,以便在Eclipse中進行更改之前獲取該類。

+0

好的!需要檢查catalina.out。但是,這是怎麼解釋的?如果我已經用'startup.sh'開始(包括錯誤),然後用'catalina jpda start'重新啓動,錯誤再次消失了?請記住,我第一次開始調試模式時,錯誤在那裏,直到我改變了這個屬性。 – ASP

+0

我相信tomcat在webapp旁邊有一個工作目錄。在調試下更新的類是「推」在那裏,但重啓startup.sh它從webapp讀取,但調試仍然與工作目錄合併。 – grekier

+0

對不起,我無法驗證這一點。如果我刪除工作目錄中的al子文件夾並刪除了webapps中的文件夾,它在調試模式下仍能正常工作,但在正常啓動時不起作用。這真讓我煩惱! :-) – ASP