今天在工做中碰到这样一个问题,有一个常量类,将工程中经常使用的一些变量定义在了里面。今天我要修改其中的某个变量。修改完后将编译好的.class文件更新到了服务器上,可是重启服务器后发现始终没有变化,仍是之前的值。我就将服务器的缓存清理,而后再重启,依然没有改变。反反复复又更新上去,又清理缓存,又重启弄了好屡次仍是不行。java
我把服务器上的.class文件反编译,发现明明已经修改了,可是运行起来就仍然仍是之前的值,感受整我的都很差了。缓存
就把调用这个常量的类反编译了一看,果真调用的地方直接就写的是原来的那个值,而不是我修改后的值。终于恍然大悟,由于被static修饰过的类在编译的时候也就是.java转成.class的时候就已经编译到了引用这个常量的地方去了。 也就是说,若是修改了这个static修饰的常量类,那么全部引用过这个常量的地方都要更新到服务器。服务器
解决: 把静态常量相关的全部class都更新才能生效;最好的方法就是整个war更新项目post