Tomcat中發布的class檔案替換失敗

2021-09-02 12:20:10 字數 958 閱讀 5945

前一陣子在客戶現場的tomcat中發布了乙個專案,後來有修改,改完之後在去發布時碰到了乙個很詭異的問題,因為碰到了兩次,第一次怎麼解決第二次時又忘了,避免第三次再忘記,這裡寫個博文記錄一下。

替換的是class檔案,也就是編譯後的檔案,位於web-inf目錄下。替換之前的檔案a大概約400行,新的檔案b約700行,處理經過及結果如下:

1、停止tomcat伺服器,用700多行的檔案b替換原有400多行的檔案a,之後開啟檔案看400多行,好像沒覆蓋一樣。

2、刪除原有檔案,再次重新替換,結果還是400多行;

3、刪除tomcat根目錄下的work中所有檔案,重新替換,重啟,結果依舊是400多行;

至此覺得詭異了,詭異的地方有兩個:乙個是無論何如替換好像都沒有替換一樣,即便「以為的系統用的一直是work中的檔案」都刪掉了讓重新弄了還是沒有效果;二個是:通常情況下,若是某個檔案正在使用刪除時是刪除不掉的,但是我這些檔案「在tomcat處於啟動模式下也就是這些檔案備使用的狀態下「都能刪除,即便是work下的檔案,都能刪除,這個很奇怪。

基於上面第二點的考慮,懷疑系統一直在用原來的舊檔案,即便我的新檔案被替換了。

我有乙個習慣,就是每次在替換檔案時,都會備份一下原來的檔案,理由很簡單:萬一改後的功能有問題導致系統出錯了還可以用舊檔案代替一下,至少可以保證系統能夠正常執行。(想必有此考慮的不止我乙個吧!)儲存位置還是在原來的資料夾下,檔名稱為:原來的名稱+下劃線+年月日+.字尾名。

懷疑過後,抱著試試看的態度,把所有的替換檔案的備份檔案都移除出了當前資料夾,重新啟動重新測試,果然正確,再開啟檔案看時,不再是頑固的400多行,變成700多行了,也就是我替換成功了。

這個問題很奇怪,我明明替換成功了,為什麼每次訪問及開啟的還是原來的檔案?tomcat伺服器有臉盲症難不成電腦也有啊,再說了我的檔名稱都改了,人家早就下班了為什麼伺服器和電腦還是揪著人家不放啊?難不成還真有臉盲症??

有遇到相同情況且知道原因的同仁、筒子們,記得幫我留個言,不勝感激!

在Tomcat中發布web專案

2 在tomcat安裝目錄中有乙個conf資料夾,開啟此資料夾,其中包含配置檔案server.xml,開啟配置檔案,並在和之間插入如下語句。path hello docbase f eclipse3.2 workspace hello webroot debug 0 privileged true ...

Redis中發布 訂閱模式

redis 的發布與訂閱功能可以讓使用者將訊息同時傳送給多個客戶端。這個功能由幾個不同的角色 協作組成 發布者 publisher 發布訊息的客戶端。頻道 channel 構建在伺服器內部,負責接收發布者傳送的訊息,並將訊息 給頻道的訂閱者。模式 pattern 構建在伺服器內部,負責對頻道進行匹配...

SQLServer 中發布與訂閱

在對資料庫做遷移的時候,會有很多方法,用儲存過程,job,也可以用開源工具kettle,那麼今天這些天變接觸到了一種新的方法,就是sqlserver中自帶的發布與訂閱。首先說明一下資料複製的流程。如下圖a是 192.168.210.170 上的資料庫,b是 172.23.100.109 上的資料庫。...