java序列化 代码变化_处理中的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;

}

}

问题似乎出在setup函数的“o.writeobject(test)”行上,错误是java.io.notSerializableException,在该异常中,我确保测试类确实实现了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:

我希望这是我最后一次通过添加此文本进行编辑,所以让我解释几个问题:

-我使用的是processing 3.5.3,这是我在文章开头指出的

-这个ide是为动画制作的,意思是,主“类”不存在,意思是它使用一个叫做sketch的文件,这是文章中的第一个代码块,我想说的是没有主方法,它使用的方法叫做“setup()”“draw()”只是设置主代码和一个常量循环以设置动画

-“testerino”是我的项目名称,草图有这个名称,这个项目中只有两个文件,它的草图不允许我实现序列化和“test”类,现在,当错误提到testerino时,让我问一下为什么它首先要尝试序列化。

-经过太多的研究和测试,我认为代码是完美的,但是处理不能序列化除整数、字符串甚至arraylists等常规变量之外的对象,这当然使我以前的问题过时了,除非有人设法找到一种方法处理3.5.3Java的对象

结论

除非有人想办法在处理过程中序列化对象,否则我无法为我的项目做太多的工作,我只能在处理过程中存储常规变量,我已经研究了一天半以上这个主题,并向我的uni讲师征求了意见,他似乎在和我是同一页,虽然他是新来处理的。

这篇文章的一个很好的答案可能是,如果有人找到了问题的解决方案,或者什么时候可以声明处理不是序列化对象,而是只序列化变量。

谢谢你的时间。

阿兹

最后编辑:

在这一点之上的每一个问题都可能是一个寻找解决方案的斗争,然而问题是序列化只适用于.java类文件,处理使用.PDE类格式,将文件格式压缩到.java帮助序列化过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值