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源码过程中报错
- 解析时报错:Protocol message tag had invalid wire type 异常
原因:二进制的内容不能直接在http协议传输,传输的内容可能有压缩或者base64编码,需要对接收到的二进制数据做解压缩或者base64解码。 - 解析式报错:Protocol message contained an invalid tag (zero)
原因:待解析的二进制数据中不全是pb二进制数据,可能还有其它内容,例如二进制数据头部约定的错误信息长度、错误信息字符串内容等。
原因:字段变动
少字段,或者字段顺序发生变化,(并且该字段有值)则会报此异常!
fieldNumber每个字段的标号,wire_type是该字段的数据类型,所有如果我们改变了业务对象类中字段的顺序,或者改变了字段的类型,都会出现反序列化失败;