Я понимаю всю концепцию, однако, пробуя ее на Processing 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
}
}
и класс Test равен
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, в котором я сделалУбедитесь, что в классе Test реализован Serializable, и даже тогда появляется та же ошибка, что, похоже, является единственной проблемой.Любая помощь?
Редактировать: Это результат
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"это название проекта для эскиза обработки, поэтому мой новый вопрос: почему он пытается сериализовать весь эскиз проекта?
Редактировать 3: Надеюсь, это последний раз, когда я редактирую, добавляя этот текст, поэтомупозвольте мне объяснить несколько проблем: -Я использую обработку 3.5.3, на которую я указал в начале поста -Эта IDE создана для анимации, то есть основной "класс" не существует, то есть использует файлпод названием Sketch, это первый блок кода в посте, я пытаюсь сказать, что основного метода нет, он использует методы с именем "setup ()" "draw ()" просто для настройки основного кода иконстантный цикл для анимации - "testerino" - это имя моего проекта, у эскиза есть это имя, в этом проекте только два файла и его эскиз, который не позволяет мне реализовать Serializable и "Test" clзадница, теперь, когда ошибка упоминает testerino, позвольте мне спросить, почему он пытается сериализоваться в первую очередь.- После слишком большого количества исследований и тестирования я пришел к мысли, что код идеален, однако обработка не может сериализовать объекты отдельно от обычных переменных, таких как Integer, String или даже ArrayLists, это, конечно, делает мои предыдущие вопросы устаревшими, если кто-тоудается найти способ сериализации объектов при обработке 3.5.3 Java
Заключение Если кто-то не найдет способ сериализации объектов при обработке, я не смогу многое сделать для своих проектов, я буду ограничен в хранении обычных переменных вВ процессе обработки я изучал эту тему более полутора дней и просил совета у моего преподавателя Uni, и он, кажется, находится на той же странице, что и я, хотя он новичок в области обработки.Хороший ответ на этот пост может быть, если кто-то найдет решение проблемы или когда может заявить, что обработка не сериализует объекты, а только переменные.Спасибо за ваше время.AZ
Окончательное редактирование: все, кто находился выше этого пункта, возможно, изо всех сил пытались найти решение, однако проблема заключалась в том, что сериализация работает только с файлами классов .java, при обработке используются форматы классов .pde, а формат файла передается в.java помог в процессе сериализации.