Я пытаюсь использовать XMLEncoder в своей программе Java, но я получаю исключение java.lang.InstantiationException. Follwing - мой код, который я использую:
/*
Method for serialization.
*/
public void serializeToXml(Object obj) throws FileNotFoundException{
FileOutputStream fos = new FileOutputStream("/home/neeraj/xmlOP.xml");
XMLEncoder encoder = new XMLEncoder(fos);
encoder.writeObject(obj);
encoder.close();
}
public static void main(String [] args){
String uuid = UUID.randomUUID().toString();
SimpleDateFormat format = new SimpleDateFormat("dd/mm/yyyy");
Date date = new Date();
String tDate = format.format(date);
ClassA a = new ClassA(uuid,"expense","Pune",tDate,1,200,0,4);
a.createAssociatedEvents(2);
serializationExample serializer = new serializationExample();
try {
serializer.serializeToXml(a);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
Кроме того: у меня есть еще два класса: classA и classB. Оба класса реализуют Serializable. ClassA имеет ArrayList класса B. Все поля обоих классов имеют методы getter и setter. Точная ошибка (трассировка стека);
java.lang.InstantiationException: classA continuing...
java.lang.exception :XMLEncoder:discarding statement XMLEncoder.writeObject(classA);
continuing.
Я не могу понять, что происходит неправильно или что означает эта ошибка. Как мне исправить мой код, чтобы все работало?
Благодарю.
XMLEncoder требует, чтобы объект JavaBeans сериализовал его, поэтому вам нужно определить конструктор общедоступного значения по умолчанию (без аргументов) в ClassA и ClassB.
Соглашение JavaBeans находится здесь.