【发布时间】:2015-01-29 19:59:01
【问题描述】:
我正在尝试制作一个在线绘图游戏。为此,我在 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;无法创建实例 在 java.io.ObjectInputStream.readOrdinaryObject(未知来源) 在 java.io.ObjectInputStream.readObject0(未知来源) 在 java.io.ObjectInputStream.readObject(未知来源) 在 com.droplay.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 服务器中的文件代码完全相同,但是我不断收到这个异常。该应用程序不会引发任何异常。它发送对象就好了。请问,我的代码有什么问题?感谢您的帮助! :)
【问题讨论】:
标签: java android sockets path server