fastjson报错Exception in thread "main" java.lang.VerifyError

我们在使用alibaba的fastjson将字符串转换java对象的时候,使用了版本为1.2.8的jar包,如下

<dependency>
            <groupId>com.yuntongxun.bm</groupId> 
            <artifactId>fastjson</artifactId> 
            <version>1.2.28</version> 
            <scope>system</scope> 
            <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/fastjson-1.2.28.jar</systemPath> 
        </dependency>

如果我们的java对象里面的 字段个数刚好是32个的时候 就会报错,错误如下
 

Exception in thread "main" java.lang.VerifyError: (class: com/alibaba/fastjson/parser/deserializer/FastjsonASMDeserializer_1_MsgForeignQuote710, method: deserialze signature: (Lcom/alibaba/fastjson/parser/DefaultJSONParser;Ljava/lang/reflect/Type;Ljava/lang/Object;I)Ljava/lang/Object;) Accessing value from uninitialized register 46
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
	at java.lang.Class.getConstructor0(Unknown Source)
	at java.lang.Class.getConstructor(Unknown Source)
	at com.alibaba.fastjson.parser.deserializer.ASMDeserializerFactory.createJavaBeanDeserializer(ASMDeserializerFactory.java:82)
	at com.alibaba.fastjson.parser.ParserConfig.createJavaBeanDeserializer(ParserConfig.java:639)
	at com.alibaba.fastjson.parser.ParserConfig.getDeserializer(ParserConfig.java:491)
	at com.alibaba.fastjson.parser.ParserConfig.getDeserializer(ParserConfig.java:348)
	at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:639)
	at com.alibaba.fastjson.JSON.parseObject(JSON.java:350)
	at com.alibaba.fastjson.JSON.parseObject(JSON.java:254)
	at com.alibaba.fastjson.JSON.parseObject(JSON.java:467)
	at com.hisun.wh.helper.MsgUtils.main(MsgUtils.java:1084)

解决方法:

1、升级fastjson的版本,只要大于1.2.8都可以。

2、在你的java对象中多添加一个字段就行,这个字段不需要对方传给你。json字符串中也可以没有这个字段,因为fastjson赋值的时候是把一样的key的值复制进去,不一样的不会复制。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章