java static静态变量缓存问题

笨蛋码农 2017-02-23 04:44:59
今天遇到了一个问题,CSDN大哥大姐们帮帮忙。。。。。。。

我在Constant 类里面定义 定义了一个静态变量
public static final int PAGER_SIZE = 15;
今天由于业务需求,我修改一下public static final int PAGER_SIZE = 12,然后把Constant类编译成 class文件,更新到tomcat服务器,重启服务器可是PAGER_SIZE的直还是15,替换好几遍,重启好几遍tomcat都还是15,然后把整个项目全删了,重新部署上去才生效。
项目用的是 spring+springmvc框架,请问这个问题怎么解决。
...全文
1183 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_51925888 2021-03-15
  • 打赏
  • 举报
回复
问题不是出在静态变量。而是final上。final修饰得变量。在被引用后直接会在引用的地方写死。你直更新了变量。引用过的地方因为已经写死了。自然不会变
greenhills555 2018-03-20
  • 打赏
  • 举报
回复
静态变量在编译后,会直接写入到引用的地方! Constant 类里面定义 定义了一个静态变量 public static final int PAGER_SIZE = 15; 业务类里面这样使用:String temp = “Love”+Constant.PAGER_SIZE; 实际编译后,结果为:String temp = “Love15”; //编译器已经对代码做了优化,你修改PAGER_SIZE 是没用的
HuNanPengdake 2017-03-31
  • 打赏
  • 举报
回复
知道如何解决这个问题了,这个问题相当坑,如果修改了static final的常量,需要替换修改的.class文件,以及调用过该常量所有的.class,具体原因暂时不太了解。
HuNanPengdake 2017-03-31
  • 打赏
  • 举报
回复
我也遇到了,tomcat8,jdk1.8 在一个类里面定义了一个static final的常量,修改了常量值编译后放入tomcat重启,访问依旧是之前的值,也是醉了,删缓存无用,只能关闭tomcat等段时间启动才行..
笨蛋码农 2017-02-24
  • 打赏
  • 举报
回复
没人回答吗?
笨蛋码农 2017-02-23
  • 打赏
  • 举报
回复
没人吗?别沉啊

5,655

社区成员

发帖
与我相关
我的任务
社区描述
Web开发应用服务器相关讨论专区
社区管理员
  • 应用服务器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧