最近在做微信支付时发现了这个问题:我在微信支付相关配置文件中修改了支付回调地址(改地址使用static final声明的),然后把配置文件部署后发现支付后为正常回调。
然后把线上调用回调地址的class文件反编译后发现:线上调用的回调地址还是我之前配置的地址。所以只配置微信支付配置文件导致回调失败。经过查找相关资料知道了:java在编译成class文件的时候,如果调用了其他class的static final常量,会直接把这个常量的值写死在本class文件里,所以不能只更新Constants.class常量文件,而要把所有调用常量的class文件都更新一遍。