Java序列化处理



我理解了整个概念,但是在处理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

最新更新