2013-03-13 18 views
1

我想写的Android手机上的客户端和发送对象到服务器我的Windows PC上运行(使用ObjectDecoderInputStream),但这些异常Netty的ObjectEncoders/ObjectDecoders造成StreamCorruptedException

异常

java.io.StreamCorruptedException: unexpected end of block data 
at java.io.ObjectInputStream.readObject0(Unknown Source) 
at java.io.ObjectInputStream.access$300(Unknown Source) 
at java.io.ObjectInputStream$GetFieldImpl.readFields(Unknown Source) 
at java.io.ObjectInputStream.readFields(Unknown Source) 
at java.net.InetSocketAddress.readObject(Unknown Source) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at java.io.ObjectStreamClass.invokeReadObject(Unknown Source) 
at java.io.ObjectInputStream.readSerialData(Unknown Source) 
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) 
at java.io.ObjectInputStream.readObject0(Unknown Source) 
at java.io.ObjectInputStream.defaultReadFields(Unknown Source) 
at java.io.ObjectInputStream.readSerialData(Unknown Source) 
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) 
at java.io.ObjectInputStream.readObject0(Unknown Source) 
at java.io.ObjectInputStream.readObject(Unknown Source) 
at org.jboss.netty.handler.codec.serialization.ObjectDecoderInputStream.readObject(ObjectDecoderInputStream.java:115) 
at MainActivity.main(MainActivity.java:30) 

但是,当我在我的电脑上使用CompatibleObjectEncoder/Decoder和我的PC上的ObjectInputStream时,它工作正常。如果我将android代码更改为Java代码,并在我的PC上运行客户端以使用ObjectEncoder及其相关的InputStream将自己的对象发送给对象,那么它工作正常。

顺便说一句,我使用netty 3.6.3最终和我的android设备是2.3.7姜饼(它使用jre 1.5或1.6),我的电脑是1.7,这可能是一个问题?

+0

Netty的IO开始使用Java 7班自3.5.0,尝试netty降级到3.4.x,看看是否有效。 – yorkw 2013-03-14 20:44:16

+0

我试过3.4.6,3.4.2,3.2.6,但都没有工作。我认为它是因为android有它自己的环境,它不兼容Java 6和7. – user2049241 2013-03-16 02:50:20

回答

1

听起来similair我的问题here - 我从来没有它的底部,但改变JVM所以两端运行相同版本停止错误

+0

谢谢。这是真的,但我需要在Android上运行,并与我的电脑沟通,有没有办法让android兼容jre 1.7? – user2049241 2013-03-14 09:48:20

+1

您可以通过将您的PC降级到JVM版本6来测试是否存在同样的问题,以查看问题是否消失 – user497087 2013-03-14 13:57:08

+0

我已经测试过,这里是结论。 JVM 6与JVM 7不兼容,并且android与JVM 6和JVM 7都不兼容 – user2049241 2013-03-15 01:48:00