我正在尝试为uni项目创建一个模拟购物车。我使用两个java类Item和shoppingCart,购物车使用向量来存储Items,然后将它们写入文件。我试图在jsp页面上使用这些类但是当我尝试写入该文件时,我得到一个java.io.WriteAbortedException:写入已中止; java.io.NotSerializableException:cart.Item ...任何想法如何解决这个问题?
答案 0 :(得分:2)
来自NotSerializableException上的javadoc ...“当需要一个实例具有Serializable接口时抛出。”
这意味着您要序列化的类需要实现Serializable标记接口。
答案 1 :(得分:0)
这是给你的一个小例子......
import java.io.*;
class player implements Serializable{
String name;
double health;
double positionX;
double positionY;
int weapon;
}
class game{
public static void main(String[] args) throws Exception{
player character1 = new player();
character1.name = "Inukz";
character1.health = 82.62;
character1.positionX = 80;
character1.positionY = 33;
character1.weapon = 2;
player character2 = new player();
character2.name = "Prasad";
character2.health = 32.62;
character2.positionX = 40;
character2.positionY = 63;
character2.weapon = 3;
player character3 = new player();
character3.name = "Thilan";
character3.health = 12.62;
character3.positionX = 10;
character3.positionY = 83;
character3.weapon = 1;
FileOutputStream fileStream = new FileOutputStream("myGame.js",true);
ObjectOutputStream os = new ObjectOutputStream(fileStream);
os.writeObject(character1);
os.close();
}
}
答案 2 :(得分:0)
要避免NotSerializableException,请确保:
除此之外,您还需要为每个Serializable类定义 serialVersionUID 。检查以上所有3个案例加上:
注意:您的代码有时可以在没有serialVersionUID的情况下运行,但read the last paragraph in Serializable's javadoc可以了解为什么它会成为问题,具体取决于环境。
有一个VM选项可以向异常添加详细信息。它显示了无法序列化的根和嵌套类:
-Dsun.io.serialization.extendedDebugInfo=true