Java сериализация на обработку - PullRequest
0 голосов
/ 11 марта 2019

Я понимаю всю концепцию, однако, пробуя ее на 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 помог в процессе сериализации.

1 Ответ

0 голосов
/ 12 марта 2019

Поместите класс Test в его собственную вкладку (если вы этого еще не сделали) и (пере) назовите эту вкладку name .java .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...