早上莫名出现一个很奇怪的问题
Caused by: java.lang.VerifyError: (class: com/alibaba/fastjson/parser/deserializer/FastjsonASMDeserializer_37_PricingPO, method: deserialze signature: (Lcom/alibaba/fastjson/parser/DefaultJSONParser;Ljava/lang/reflect/Type;Ljava/lang/Object;I)Ljava/lang/Object;) Accessing value from uninitialized register 48
按理说正式环境用的也是同样的代码,不应该测试环境出现问题
对比测试跟线上环境的参数,发现测试环境多了2个参数。初步猜测是请求参数不在实体范围内。
测试:去除掉多余的参数,还是会有同样的问题
经排查,是fastjson 版本的问题,转换的成实体属性如果到达32或者64的时候就会出现这个问题。
目前我们用的fastjson是1.2.28 升级到1.2.47即可解决这个问题
参考:https://github.com/alibaba/fastjson/issues/1092
补充一点,即使版本到达1.2.47,在实体数目达到96时仍然会出现问题