今天在工做中碰到這樣一個問題,有一個常量類,將工程中經常使用的一些變量定義在了裏面。今天我要修改其中的某個變量。修改完後將編譯好的.class文件更新到了服務器上,可是重啓服務器後發現始終沒有變化,仍是之前的值。我就將服務器的緩存清理,而後再重啓,依然沒有改變。反反覆覆又更新上去,又清理緩存,又重啓弄了好屢次仍是不行。java
我把服務器上的.class文件反編譯,發現明明已經修改了,可是運行起來就仍然仍是之前的值,感受整我的都很差了。緩存
就把調用這個常量的類反編譯了一看,果真調用的地方直接就寫的是原來的那個值,而不是我修改後的值。終於恍然大悟,由於被static修飾過的類在編譯的時候也就是.java轉成.class的時候就已經編譯到了引用這個常量的地方去了。 也就是說,若是修改了這個static修飾的常量類,那麼全部引用過這個常量的地方都要更新到服務器。服務器
解決: 把靜態常量相關的全部class都更新才能生效;最好的方法就是整個war更新項目post