【发布时间】:2018-01-15 00:48:48
【问题描述】:
我正在编写一个简单的 Java gmail 客户端来完成我的 A 级项目。 当以下代码部分运行时,我总是会收到错误消息。 我不知道为什么会出现错误。
public static void save(List<user> u3){
try {
FileOutputStream fos=new FileOutputStream("users.ser");
ObjectOutputStream oos= new ObjectOutputStream(fos);
oos.writeObject(u3);
}catch (Exception e) {
e.printStackTrace(); //Added due to suggestion of commentor
}
}
错误是:
java.io.NotSerializableException: 用户 在 java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) 在 java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) 在 java.util.ArrayList.writeObject(ArrayList.java:762) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:497) 在 java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988) 在 java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) 在 java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 在 java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 在 java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) 在 main.saveu(main.java:65) 在 main.main(main.java:42) 在 __SHELL12.run(__SHELL12.java:6) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:497) 在 bluej.runtime.ExecServer$3.run(ExecServer.java:730)
【问题讨论】:
-
用户类是否实现了Serializable?
-
主类还是用户类?他们都没有实现可序列化
-
你应该阅读如何在 Java 中serialize objects
-
非常感谢 Tezra,我对可序列化类不太熟悉,我有点忽略了一些东西,感谢链接,感谢其他所有人
标签: java serializable