2011-10-28 36 views
0

我有一個Java應用程序。我所有的一切都是關於課堂文件的。我想用新的文件替換一個類文件。用新的替換舊的類文件並重新設置tomcat並不反映這些更改。我怎樣才能做到這一點?我知道它不是一種推薦的方式,但我擁有的只是一個新的類文件。如何通過替換tomcat中的類文件來反映更改?

+0

如果它在重新啓動之後沒有「反映更改」...您沒有做任何更改。我懷疑你的web應用程序是在'war'文件中,並在啓動時重新部署,覆蓋你所做的任何事情。 –

+0

我該如何避免? – user811433

+0

我使用Eclipse Kepler Dynamic Web項目和Tomcat 7.0作爲工作區服務器時遇到了同樣的問題。我通過解決所有項目的問題來修復它,然後右鍵單擊Tomcat服務器,選擇Clean,然後選擇Publish。 – BrownsFan

回答

1

我已經按照之前描述的方式完成了這個任務,並且Tomcat在重新啓動後反映了這些更改。

也許您的應用程序的文件位於多個位置,並且您沒有在正確的部署中替換類文件?確保Tomcat是否自動擴展WAR文件,並將其替換到擴展文件夾中。如果您的應用程序部署在除webapps之外的其他位置,請仔細檢查您的<Context>指向其文檔庫的位置。

+0

我該如何避免在tomcat stratup上重新部署war文件? – user811433

+1

我不是100%確定的,但我認爲如果Tomcat找到與WAR同名的文件夾,它將假定該文件夾是展開的WAR,並且不會重新部署。假設你有'tomcat/webapps/myApp.war'和一個擴展文件夾'tomcat/webapps/myApp'。您應該能夠在'tomcat/webapps/myApp/WEB-INF/classes/path/to/file.class'中替換'.class'文件,並且Tomcat應該在重新啓動時選擇這些更改。我已經完成了很多次,它的工作方式與您期望的相同,所以您必須更換錯誤的文件,或者您正在驗證更改是否有誤。 –

+0

我剛剛檢查了這一點。我在正確的位置替換了正確的文件。但tomcat並沒有選擇它。 – user811433

1

您可以配置Tomcat並使您的web應用程序「可重新加載」。爲此,請將reloadable=true添加到Web應用程序的<Context>元素中。

設置爲true如果您希望Catalina監控/WEB-INF/classes//WEB-INF/lib中的類以進行更改,並在檢測到更改時自動重新加載Web應用程序。但是,您可以使用Manager Web應用程序觸發按需重新部署已部署的應用程序。

+0

他已經表明他重新啓動了tomcat。 –

+0

原因可能不是正確的類文件被替換。 –

+0

這重新加載整個應用程序,無論如何只交換該特定的類文件? – Madeyedexter

相關問題