我想写的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,这可能是一个问题?
Netty的IO开始使用Java 7班自3.5.0,尝试netty降级到3.4.x,看看是否有效。 – yorkw 2013-03-14 20:44:16
我试过3.4.6,3.4.2,3.2.6,但都没有工作。我认为它是因为android有它自己的环境,它不兼容Java 6和7. – user2049241 2013-03-16 02:50:20