Я пытаюсь написать класс, который позволит мне просто написать .save(); для создания постоянных копий дочерних классов. Я создал метод, который создает XML:CannotResolveClassException при чтении XML-файла в методе
public boolean save() throws IOException{
XStream xstream = new XStream(new KXml2Driver());
FileWriter extenceWriter = new FileWriter(saveFile);
xstream.alias(this.getClass().getSimpleName(), this.getClass());
xstream.toXML(this, extenceWriter);
return saveFile.exists();
}
и еще один, который должен прочитать его:
public Object loadFile(String path) throws FileNotFoundException{
File file = new File(appRootDIR + File.separator + path);
XStream xstream = new XStream(new KXml2Driver());
FileReader extenceReader = new FileReader(file);
return xstream.fromXML(extenceReader);
}
Проблема заключается в том, что я получаю com.thoughtworks.xstream.mapper.CannotResolveClassException когда Я пытаюсь использовать loadFile().
Я проверил google и самый близкий хит был в том, что разные экземпляры xstream не могут общаться.
Это можно решить, перемещая xstream в поле класса, но затем я получаю некоторые ошибки относительно того, что xstream не может сериализоваться.
Есть ли хороший способ реализовать как методы чтения, так и записи в классе без необходимости создания экземпляра xstream вне поля?
Благодарим за помощь! Вариант один работает отлично. Не удалось выяснить, как зарегистрировать псевдонимы, но я попробую. –