日期:2014-05-18  浏览次数:20589 次

增量发布项目时容易掉进的陷阱!!(分享贴)
   今天在做项目更新时,发现了一个很容易忽略,也很难发觉的问题!
    当我们改了工程里面的常量时,必须把引用到这个常量的所有类都重新编译发布,因为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文件,并重启服务器。貌似不用重新编译引用的类。
------解决方案--------------------
有用。一个提醒