You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Oct 23, 2024. It is now read-only.
java.lang.VerifyError: (class: com/alibaba/fastjson/parser/deserializer/FastjsonASMDeserializer_1_xxx, method: deserialze signature: (Lcom/alibaba/fastjson/parser/DefaultJSONParser;Ljava/lang/reflect/Type;Ljava/lang/Object;I)Ljava/lang/Object;) Register 5 contains wrong type
at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3137)
at java.base/java.lang.Class.getConstructor0(Class.java:3342)
at java.base/java.lang.Class.getConstructor(Class.java:2151)
at com.alibaba.fastjson.parser.deserializer.ASMDeserializerFactory.createJavaBeanDeserializer(ASMDeserializerFactory.java:87)
at com.alibaba.fastjson.parser.ParserConfig.createJavaBeanDeserializer(ParserConfig.java:1073)
at com.alibaba.fastjson.parser.ParserConfig.getDeserializer(ParserConfig.java:879)
at com.alibaba.fastjson.parser.ParserConfig.getDeserializer(ParserConfig.java:584)
at com.alibaba.fastjson.util.TypeUtils.castToJavaBean(TypeUtils.java:1559)
at com.alibaba.fastjson.util.TypeUtils.cast(TypeUtils.java:1127)
at com.alibaba.fastjson.JSON.toJavaObject(JSON.java:1236)
fastjson版本:1.2.83
类xxx.java字段过多时,执行JSON.toJavaObject(JSON.parseObject(a), xxx.class),报错:
断点调试之后发现,代码执行到 com.alibaba.fastjson.parser.deserializer.ASMDeserializerFactory#_deserialze_list_obj 的 mw.visitIincInsn(context.var("i"), 1) 这一行时,context.var("i")这个值是261,在最后生成的class里本应该是++var261,visitIincInsn内部会把context.var("i")强转成byte,(byte)261=5,于是实际上这一行会变成++var5,于是发生了上面的错误。
但是实际上代码里也有支持context.var("i")超出byte范围的逻辑,但是好像被注释掉了?
The text was updated successfully, but these errors were encountered: