java编译静态常量的机制
来源:互联网 发布:流行的数据库管理软件 编辑:程序博客网 时间:2024/06/06 00:20
java虚拟机编译机制,静态常量在编译后,成为了常量,而不是原先的代码,例如:
有一个类
Contant.java
里面有一些静态常量
public static final String GONGDAN = "gongdan@ceopen.cn";
public static final String ICT = "ictnetwork@ceopen.cn";
然后在程序中有使用这些常量,Contant.GONGDAN
在那些程序编译后的.class文件中,这些常量成了相应的值,即gongdan@ceopen.cn,而不是Contant.GONGDAN
有一次在更新项目发布时一时大意,没将本地测试时更改成的本人邮箱改过来,就发布到服务器上了。当时就是Contant.java里面的GONGDAN常量。知道之后将Email改正过来,将Contant.java编译后的.class文件提交到服务器上相应class的包里面了。
但是,接下来的好几天,该给gongdan@ceopen.cn发的邮件全发到之前我的那个邮箱里了。百思不得其解。到服务器上应用程序里使用操作系统的查找功能进行查找,没找到那个邮件地址。还一直以为是啥缓存的。
后来通过将使用到Contant.GONGDAN的.class文件反编译,发现Contant.GONGDAN的地方是我的email地址,而不是Contant.GONGDAN
而本地eclipse上改代码相关的地方会重新编译,不会出现这种情况。
而发布到服务器上,tomcat只负责解析jsp,servlet文件,.class文件不会变
这种问题以后得注意了。尽量不要使用静态常量,用属性文件来代替
- jse--静态常量弊端--java编译静态常量的机制
- java编译静态常量的机制
- java编译静态常量的机制
- 关于静态常量的编译
- JAVA的静态常量
- Java静态常量
- 测试java中静态常量和静态变量的区别
- java中静态常量和静态变量的区别
- java的编译机制
- Java编译期常量
- java 编译期常量
- 静态常量的初始化
- JAVA的动态编译和静态编译
- java 声明静态Map常量的一种简单方式
- java 的栈,堆,静态域,常量池
- java 的栈,堆,静态域,常量池
- java 的栈,堆,静态域,常量池
- java 声明静态Map常量的一种简单方式
- 骗钱没商量 软件厂商6大忽悠伎俩揭秘
- 样式
- DrawBitmap
- 用iTextSharp读取PDF文档中文本内容的探索
- effective c++ 关于c++对象的初始化。
- java编译静态常量的机制
- http://blog.csdn.net/tianyi2/archive/2009/06/18/4280482.aspx
- 逆水行舟,不进则退
- struts2框架在jsp页面无法解析EL表达式的问题解决
- Global.asax介绍
- pscp
- INI 文件的操作
- 善待朋友
- 网站架构:HTML静态化