关于final static修饰的常量部署后没有更新的问题

出现问题的场景是这样的:

项目中有个专门放流程Key值常量的类FlowConstants.java,其中这些常量都用了final static 修饰。某天因为修改了流程,相应的key值也改变了,所以直接更新了FlowConstants.java中对应的key值。

重新部署为了方便直接将这个常量类编译后的class文件将服务器上的文件替换了,重启服务,运行项目发现流程获取的key值仍然是之前未修改的值,多次替换重启后仍是这样,最后直接将项目重新整体打包发布后才算正常了。

为什么导致这样的显现,参考了网上一位网友的博客才知道了其中的原因。是因为:

java在编译成class文件的时候,如果调用了其他class的static final常量,会直接把这个常量的值写死在本class文件里,所以不能只更新FlowConstants常量文件,而要把所有调用常量的class文件都更新一遍。

按照如上做法,问题解决了。

参考:http://blog.sina.com.cn/s/blog_66dddb8b0102y1un.html

猜你喜欢

转载自www.cnblogs.com/conswin/p/8889302.html
今日推荐