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


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

      我把服务器上的.class文件反编译,发现明明已经修改了,但是运行起来就仍然还是以前的值,感觉整个人都不好了。

      就把调用这个常量的类反编译了一看,果然调用的地方直接就写的是原来的那个值,而不是我修改后的值。终于恍然大悟,因为被static修饰过的类在编译的时候也就是.java转成.class的时候就已经编译到了引用这个常量的地方去了。 也就是说,如果修改了这个static修饰的常量类,那么所有引用过这个常量的地方都要更新到服务器。

    解决: 把静态常量相关的所有class都更新才能生效;最好的方法就是整个war更新项目

  • 相关阅读:
    angularjs中的指令
    git笔记
    webpack.config.js
    webpack开发react常用插件和依赖
    angularjs中的分页指令
    angularjs中的排序和过滤
    react学习
    gulp学习
    Javascript 判断变量类型的陷阱 与 正确的处理方式
    Fn.bind.apply() 解决 new 操作符不能用与 apply 或 call 同时使用
  • 原文地址:https://www.cnblogs.com/JsonShare/p/9907820.html
Copyright © 2020-2023  润新知