我理解了整个概念,但是在处理3.5.3时尝试它使它起作用,而且我觉得我缺少某些东西,但是经过数小时的搜索序列化,我得到了这个代码
import java.io.*;
import java.util.*;
void setup() {
Test test = new Test("Pedro", "1337");
String fileName = "test.bin";
try {
ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream(fileName));
o.writeObject(test);
o.close();
}
catch (FileNotFoundException e) {
System.out.println("File not found");
}
catch (IOException e) {
System.out.println("Error initializing stream");
e.printStackTrace();
}
try {
ObjectInputStream oi = new ObjectInputStream(new FileInputStream(fileName));
System.out.println(oi.readObject());
oi.close();
}
catch (FileNotFoundException e) {
System.out.println("File not found");
}
catch (IOException e) {
System.out.println("Error initializing stream");
e.printStackTrace();
}
catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
}
}
,测试类是
import java.io.Serializable;
class Test implements Serializable {
String name;
String studentId;
Test (String n, String s) {
name = n;
studentId = s;
}
}
问题似乎在设置功能上的" O.WriteObject(test)"行上,错误是Java.io.NotserializableException,我确保测试类确实可以序列化,即使那样出现同样的错误,这似乎是唯一的问题。有帮助吗?
编辑:这是结果
Error initializing stream
java.io.NotSerializableException: testerino
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at testerino.setup(testerino.java:33)
at processing.core.PApplet.handleDraw(PApplet.java:2425)
at processing.awt.PSurfaceAWT$12.callDraw(PSurfaceAWT.java:1547)
at processing.core.PSurfaceNone$AnimationThread.run(PSurfaceNone.java:313)
Error initializing stream
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: testerino
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1577)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431)
at testerino.setup(testerino.java:47)
at processing.core.PApplet.handleDraw(PApplet.java:2425)
at processing.awt.PSurfaceAWT$12.callDraw(PSurfaceAWT.java:1547)
at processing.core.PSurfaceNone$AnimationThread.run(PSurfaceNone.java:313)
Caused by: java.io.NotSerializableException: testerino
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at testerino.setup(testerino.java:33)
... 3 more
编辑2:我必须说,错误消息说" Java.io.NotserializableException:testerino",但是" Testerino"是处理草图的项目名称,所以我的新问题是为什么它尝试序列化整个项目草图?<<<<<<<<<<<</p>
编辑3:我希望这是我最后一次添加此文本的编辑,所以让我解释一些问题: - 我正在使用处理3.5.3,我在帖子的开头指出 - 这是为动画制作的,意思是,主要的"类"不存在,这意味着它使用了一个称为素描的文件,这是帖子上的第一个代码块,我想说的是没有主方法,它使用称为" setup()" draw()的方法来设置主代码和一个常数循环以动画 - " Testerino"是我的项目名称,草图具有该名称,该项目中只有两个文件,其草图不允许我实现序列化和"测试"类,现在,当错误提及Testerino时,我问为什么它首先尝试序列化。 - 经过太多的研究和测试,我想到了代码是完美的想法,但是处理无法序列化对象,除了正常变量(例如整数,字符串甚至阵列列表),这当然会使我的早期问题过时,除非有人过时设法找到一种处理对象处理3.5.3 Java
的方法结论除非有人想出一种在处理中序列化对象的方法,否我的Uni讲师,尽管他是加工的新手,但他似乎和我在同一页上。这篇文章的一个很好的答案可能是,如果有人找到解决方案的解决方案,或者何时可以说明处理不会序列化对象而是变量。谢谢你的时间。AZ
最终编辑:高于这一点的所有内容可能都是为了找到解决方案的努力,但是问题是序列化仅适用于.java类文件,处理使用.pde class格式,将文件格式cahner cahn cahn confor a .java在序列化过程中提供了帮助。
将Test
类放入其自己的选项卡中(如果还没有),并且(re)名称此选项卡 name .java