Я работаю над проектом с использованием Java RMI.Это проблема, вызывающая класс:
public class FSFile implements Serializable
{
public static final int READ = 0;
public static final int WRITE = 1;
private int flag;
private String filename;
private transient BufferedWriter writer;
private transient BufferedReader reader;
...
private void writeObject(ObjectOutputStream stream) throws IOException
{
stream.defaultWriteObject();
stream.writeObject(writer);
stream.writeObject(reader);
}
private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException
{
stream.defaultReadObject();
writer = (BufferedWriter) stream.readObject();
reader = (BufferedReader) stream.readObject();
}
}
По сути, я использую RMI для локальной отправки этого объекта FSFile другому процессу (сейчас), и вот ошибка, которую я получаю:
java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException;
java.io.BufferedReader
Чтобы быть более точным, есть один класс с именем FileService, который использует функцию fetch () из FileServer, чтобы получить взамен FSFile.В функции fetch () нет ничего особенного, она просто создает FSFile и возвращает его.Все коммуникации между этими классами осуществляются через RMI.
Почему у меня такая ошибка?