增量发布项目时容易掉进的陷阱!!(分享贴)
今天在做项目更新时,发现了一个很容易忽略,也很难发觉的问题!
当我们改了工程里面的常量时,必须把引用到这个常量的所有类都重新编译发布,因为java的机制时,在编译时是把常量写到字节码里的。所以如果公共类里面的常量值变化了,必须把引用到该常量的类重编译
例如:
PlCommon.java
public class PlCommon {
public static final String A = "1"
}
XxxAction.java
public class XxxAction{
public String getXxx{
return PlCommon.A;
}
}
当修改了PlCommon.java
public class PlCommon {
public static final String A = "2"
}
如果不重新编译XxxAction.java,会发现getXxx得到的值还是"1";因为常量不是动态引用的,
是编译期就定了的。这里就可以会导致难以看出的错误!!
在此分享只希望各位同行在做项目增量发布时多多注意!少走弯路!
------解决方案--------------------哪有这样编单个文件的,必须重新编译整个项目
------解决方案--------------------为何不把这些常量写到配置文件里,这样即使项目发布了,修改配置文件就好了。
------解决方案--------------------之前debug断点时,可以临时修改变量值,方便调试,如果修改了常量类引用,则必须替换服务器中该常量类的class文件,并重启服务器。貌似不用重新编译引用的类。
------解决方案--------------------有用。一个提醒