com.dyuproject.protostuff.ProtobufException: Protocol message contained an inval

log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.IllegalStateException: Reading from a byte array threw an IOException (should never happen).
	at com.cmall.redis.utils.RedisSeriUtils.deserialize(RedisSeriUtils.java:51)
	at com.cmall.redis.dao.JedisClusterDao.jhget(JedisClusterDao.java:78)
	at com.cmall.redis.service.impl.RedisClusterServiceImpl.hget(RedisClusterServiceImpl.java:49)
	at com.artbulb.redis.BaseJedisApp.main(BaseJedisApp.java:46)
Caused by: java.lang.RuntimeException: Reading from a byte array threw an IOException (should never happen).
	at com.dyuproject.protostuff.IOUtil.mergeFrom(IOUtil.java:52)
	at com.dyuproject.protostuff.ProtostuffIOUtil.mergeFrom(ProtostuffIOUtil.java:96)
	at com.cmall.redis.utils.RedisSeriUtils.deserializeInternal(RedisSeriUtils.java:112)
	at com.cmall.redis.utils.RedisSeriUtils.deserialize(RedisSeriUtils.java:46)
	... 3 more
Caused by: com.dyuproject.protostuff.ProtobufException: Protocol message contained an invalid tag (zero).
	at com.dyuproject.protostuff.ProtobufException.invalidTag(ProtobufException.java:98)
	at com.dyuproject.protostuff.ByteArrayInput.readFieldNumber(ByteArrayInput.java:220)
	at com.dyuproject.protostuff.runtime.MappedSchema.mergeFrom(MappedSchema.java:188)
	at com.dyuproject.protostuff.runtime.ObjectSchema.readObjectFrom(ObjectSchema.java:627)
	at com.dyuproject.protostuff.runtime.ObjectSchema.mergeFrom(ObjectSchema.java:312)
	at com.dyuproject.protostuff.ByteArrayInput.mergeObjectEncodedAsGroup(ByteArrayInput.java:390)
	at com.dyuproject.protostuff.ByteArrayInput.mergeObject(ByteArrayInput.java:362)
	at com.dyuproject.protostuff.runtime.RuntimeUnsafeFieldFactory$15$1.mergeFrom(RuntimeUnsafeFieldFactory.java:921)
	at com.dyuproject.protostuff.runtime.MappedSchema.mergeFrom(MappedSchema.java:196)
	at com.dyuproject.protostuff.IOUtil.mergeFrom(IOUtil.java:43)
	... 6 more

三、使用Java源码过程中报错

  1. 解析时报错:Protocol message tag had invalid wire type 异常 
    原因:二进制的内容不能直接在http协议传输,传输的内容可能有压缩或者base64编码,需要对接收到的二进制数据做解压缩或者base64解码。
  2. 解析式报错:Protocol message contained an invalid tag (zero) 
    原因:待解析的二进制数据中不全是pb二进制数据,可能还有其它内容,例如二进制数据头部约定的错误信息长度、错误信息字符串内容等。

原因:字段变动

少字段,或者字段顺序发生变化,(并且该字段有值)则会报此异常!

fieldNumber每个字段的标号,wire_type是该字段的数据类型,所有如果我们改变了业务对象类中字段的顺序,或者改变了字段的类型,都会出现反序列化失败;

猜你喜欢

转载自m635674608.iteye.com/blog/2388360