关闭

static final修饰的静态变量修改后更新到服务器,无法生效的问题。

标签: javastatic服务器常量
46人阅读 评论(0) 收藏 举报
分类:

       今天在工作中碰到这样一个问题,有一个类作为专门的常量类,将工程中常用的一些变量定义在了里面。今天我要修改其中的某个变量。修改完后将编译好的.class文件更新到了服务器上,但是重启服务器后发现始终没有变化,还是以前的值。我就将服务器的缓存清理,然后再重启,依然没有改变。反反复复又更新上去,又清理缓存,又重启弄了好多次还是不行。

      我把服务器上的.class文件反编译,发现明明已经修改了,但是运行起来就仍然还是以前的值,感觉整个人都不好了。我就想看看是不是我调用的地方被写死了,其实没有调用到这个常量类,就把调用这个常量的类反编译了一看,果然调用的地方直接就写的是原来的那个值,而不是我修改后的值。终于恍然大悟,因为被static修饰过的类在编译的时候也就是.java转成.class的时候就已经编译到了引用这个常量的地方去了。 也就是说,如果修改了这个static修饰的常量类,那么所有引用过这个常量的地方都要编译一次后更新到服务器上去阿。。。。

    所以有些用不了一两次的常量和何必写成static的,还是要慎用。

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:48次
    • 积分:11
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档