Учитывая следующий код:
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. Объект View включает в себя несколько других объектов, и я считываю ввод из файла в этом коде.Предположим, что объект 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)
Что здесь не так?
С уважением, Рон