2015-06-03 113 views
7

我遇到了tomcat部署我的文件到服務器的問題。Tomcat沒有部署新版本的文件 - linux/eclipse

我已經安裝了Tomcat 7至/opt/tomcat7

在我的eclipse中,我已經指定了這個路徑作爲我的tomcat服務器。

我的工作空間目錄是/home/maciej/workspace/<projects here>

現在如果我通過編輯一個類文件,我想補充只需登錄聲明

log.info("blabla");,然後部署「NEW」版本的文件 - 在服務器上運行,我在我的輸出中沒有看到這個'blabla'。看起來好像我雖然修改了類文件,但沒有正確地部署到tomcat中。 Tomcat正在閱讀上帝知道什麼,但肯定不是它應該閱讀的文件。

編輯:我已經recofnigured我的tomcat的Eclipse和現在:

Server Path = /opt/tomcat7 
Deploy Path = /opt/tomcat7/webapps <- used to be .metadata/blablabla default 
             eclipse tomcat location 

當我打開「打開午餐配置」下的參數/工作目錄的默認選項是票與灰色路徑/home/maciej/Desktop

這是否也應該改變?

是不是tomcat的工作目錄/opt/tomcat7/work

任何建議/想法?由於這個問題稍微讓我感到緊張,因爲我無法開發應用程序。

回答

1

Server Path是一樣的,你在Window>Preferences>Server>Runtime Environments看到擊中Edit後的模態的Tomcat installation directory。這應該設置爲/opt/tomcat7或Tomcat安裝的根目錄。

Deploy Path是相對於Server Path。它應該是webapps,除非你已經有東西,你想要一個單獨的目錄。在關閉Tomcat並通過Servers視圖刪除其下的所有webapps之前,您將無法編輯它。

如果您信任JDK熱交換,則應該取消選中Modules auto reload by default,如果您使用的是JDK 1.7或1.8,並且只想查看插入的日誌語句,則應該使用該熱交換。

您提到的工作目錄只是Tomcat用於在崩潰等情況下吐出線程轉儲的根目錄。它與Tomcat「work」目錄無關。

0

打開服務器視圖:窗口 - >顯示視圖 - >其他 - >服務器。選擇正確的服務器,右鍵單擊,選擇「清理」,然後重新啓動tomcat。它應該有所幫助。

+0

好吧,它有點解決這個問題。但似乎我必須每次都要做這個過程,我想重新部署我的應用程序,這是不希望的。爲什麼重新部署tomcat不會自行清理它?我的Windows機器沒有這個問題,但我的Linux沒有。 –

+0

檢查該服務器的配置。它在您雙擊它後出現。 – JiriS

+0

好吧,所以我改變了配置,現在我正在使用我的tomcat完全部署webapp。所以我已經將/ opt/tomcat7/webapps和服務器路徑的部署路徑設置爲/ opt/tomcat7 ....但是仍然還是沒有將新版本的文件部署到webapps –

0

如果您更改項目中的某些內容,則Eclipse會自動生成並將這些文件「部署」到您指定的位置。默認情況下,Eclipe的工作在那裏停止,其餘的由Tomcat決定。

與任何Java Web服務器一樣,Tomcat檢測JSP中的更改並重新編譯它們。儘管如此,由於Java類加載的工作方式,類的變化沒有效果。對於tomcat要使用的新類,您需要:

  1. 以前沒有加載類。例如,你啓動tomcat,但在做任何請求之前看到一個錯誤。如果你改變這個類,那麼這個改變將被使用,因爲這個類還沒有加載。
  2. 重新加載應用程序。這意味着所有的課程都會被丟棄,並且所有的課程都會重新開始

默認情況下,重新加載應用程序的最簡單方法是對web.xml進行更改。如果你看看tomcat的配置conf/context.xml你可以看到WEB-INF/web.xml被監控。任何更改都會觸發上下文的重新加載。因此,您可以在文件中進行人爲更改或添加資源,如WEB-INF/version.properties,並生成與任何版本不同的version.properties

在任何情況下,重新加載複雜的應用程序都需要時間。這就是爲什麼有像JRebel這樣的插件。但是在你走下去之前(這會增加另一個移動部分到你的設置),你也可以嘗試使用Eclipe對熱代碼替換的支持。在調試中啓動tomcat,使用Eclipse連接它,然後更改某個類。 Eclipse將嘗試重新編譯該類並將新定義上載到tomcat。如果失敗,它會告訴你。作爲一般規則,當您更改程序結構並在您更改方法實現時成功時,它會失敗。