我试图制作一个在线绘图游戏。为此,我在Android中使用Path类,我需要将它发送到我的Java服务器。为此,我尝试扩展Path类,如下所示:
public class SerializedPath extends Path implements Serializable {
private static final long serialVersionUID = -5974912367682897467L;
}
为了简化问题并缩小问题范围,我所做的只是使用outputStream.writeObject(new SerializedPath)和outputStream.flush()发送它,其中outputStream是ObjectOutputStream的一个实例。在服务器上,我只需使用inputStream.readObject()读取它,其中inputStream是ObjectInputStream的一个实例。我得到的例外是:
java.io.InvalidClassException:com.droplay.drawingonline.path.SerializedPath;无法创建实例 at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) 在com.droplay.drawingonline.Session.run(Session.java:71) 在java.lang.Thread.run(未知来源) 引起:java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedSerializationConstructorAccessor1.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.io.ObjectStreamClass.newInstance(Unknown Source) ......还有5个 引起:java.lang.RuntimeException:Stub! 在android.graphics.Path。(Path.java:24) ......还有8个
现在,为了解决这个问题,我曾尝试创建一个没有任何成员但没有扩展任何成员的新类,但它确实有效。服务器没有抛出任何异常,它就像一个魅力。我确保包名称相同,类的名称相同,服务器使用与我的Android项目相同的SDK文件和文件' Android应用程序和Java服务器中的代码完全相同,但我一直得到这个例外。该应用程序不会抛出任何异常。它发送对象就好了。请问,我的代码有什么问题?谢谢你的帮忙! :)
答案 0 :(得分:1)
我设法通过将每次点击的位置发送到服务器而不是路径类来解决它。但是为什么在我序列化它时它不起作用呢?