给定以下代码:
import java.io.*;
public class Main {
public static void main(String argv[]) throws IOException
{
View view = null;
try
{
/* Open the file that is the first command line parameter
text file must be inside the project library , not in the src library */
FileInputStream fstream = new FileInputStream("input.txt");
DataInputStream in = new DataInputStream(fstream);
BufferedReader groupsFile = new BufferedReader(new InputStreamReader(in));
view = new View();
view.insertTeamsFromFile(groupsFile);
view.startCompetition();
in.close();
}
//Catch exception if any
catch (Exception e) { System.err.println("Error: " + e.getMessage()); }
try
{
String filename = "view.txt";
FileOutputStream fos = new FileOutputStream(filename);
ObjectOutputStream out = new ObjectOutputStream(fos);
out.writeObject(view);
out.close();
System.out.println("Object Persisted");
}
catch (IOException e)
{
e.printStackTrace();
}
}
}当我读到行out.writeObject(view);时,NotSerializableException appears.The视图对象包括一些其他对象,并且我从该代码中的一个文件中读取输入。假设View对象被创建得很好,那么这里会有什么问题呢?
View class :
public class View implements Serializable {
import java.io.*;
import java.util.*;
/* Constructor */
private Controller controller;
public View()
{
controller = new Controller();
}
... ...
// more code
}确切的信息是:
java.io.NotSerializableException: core.Controller
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)这是怎么回事?
问候你,罗恩
发布于 2012-01-01 19:46:16
异常消息非常清楚:core.Controller类是不可序列化的。使其实现Serializable,如果不能序列化,则将其声明为transient。
发布于 2012-01-01 19:44:11
Controller是否实现了Serializable?View和Controller的所有字段都必须声明它们是可序列化的。
https://stackoverflow.com/questions/8692920
复制相似问题