Java 使用套接字发送序列化的Android对象会引发InvalidClassException
我想做一个在线绘画游戏。为此,我在Android中使用Path类,需要将其发送到Java服务器。为此,我尝试扩展Path类,如下所示:Java 使用套接字发送序列化的Android对象会引发InvalidClassException,java,android,sockets,path,server,Java,Android,Sockets,Path,Server,我想做一个在线绘画游戏。为此,我在Android中使用Path类,需要将其发送到Java服务器。为此,我尝试扩展Path类,如下所示: public class SerializedPath extends Path implements Serializable { private static final long serialVersionUID = -5974912367682897467L; } 为了简化事情并缩小问题范围,我所做的只是将其与outputStream.writ
public class SerializedPath extends Path implements Serializable {
private static final long serialVersionUID = -5974912367682897467L;
}
为了简化事情并缩小问题范围,我所做的只是将其与outputStream.writeObject(新的SerializedPath)一起发送,然后发送outputStream.flush(),其中outputStream是ObjectOutputStream的实例。在服务器上,我只是使用inputStream.readObject()读取它,其中inputStream是ObjectInputStream的实例。我得到的例外是:
java.io.InvalidClassException:com.dropay.drawingonline.path.SerializedPath;无法创建实例
位于java.io.ObjectInputStream.ReadOrderinaryObject(未知源)
位于java.io.ObjectInputStream.readObject0(未知源)
位于java.io.ObjectInputStream.readObject(未知源)
位于com.dropay.drawingonline.Session.run(Session.java:71)
位于java.lang.Thread.run(未知源)
原因:java.lang.reflect.InvocationTargetException
位于sun.reflect.GeneratedSerializationConstructorAccessor1.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于java.io.ObjectStreamClass.newInstance(未知源)
... 还有5个
原因:java.lang.RuntimeException:存根!
在android.graphics.Path.(Path.java:24)
... 8个以上
现在,为了解决这个问题,我尝试创建一个新类,这个类没有任何成员,也没有扩展任何内容,它确实起了作用。服务器没有抛出任何异常,它工作得很好。我确保包的名称相同,类的名称相同,服务器使用与我的Android项目相同的SDK文件,并且Android应用程序和Java服务器中的文件代码都完全相同,但我一直得到这个例外。该应用程序不会引发任何异常。它可以很好地发送对象。拜托,我的代码怎么了?谢谢你的帮助!:) 我通过将每次单击的位置发送到服务器而不是路径类来解决这个问题。但是为什么当我序列化它时它不工作呢