13.10.2012, 23:05 | #1 (permalink) |
Member
Регистрация: 14.12.2010
Сообщений: 37
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 15
|
Сериализация объектов в java с помощью XMLEncoder
В общем, проблема такова: мне надо сериализовать объект в XML файл. При использовании XMLEncoder пишет: java.lang.IllegalAccessException: Class sun.reflect.misc.Trampoline can not access a member of class task4.Task4$Zachotka with modifiers "public" Continuing ... java.lang.Exception: XMLEncoder: discarding statement XMLEncoder.writeObject(Task4$Zachotka); Continuing ... Код package task4; import java.io.*; import java.util.Scanner; import java.beans.XMLEncoder; import java.beans.XMLDecoder; public class Task4 { private static class Zachotka implements java.io.Serializable{ public Zachotka(){} static class Session { int NumOfSubj; int marks[]; String subjects[]; Session(Scanner eye) { eye.nextInt(); this.NumOfSubj = eye.nextInt(); this.subjects = new String[NumOfSubj]; this.marks = new int[NumOfSubj]; for (int j = 0; j < NumOfSubj; ++j) { this.subjects[j] = eye.next(); this.marks[j] = eye.nextInt(); } } } static private String name, fam, otch; static private int kyrs, grope, ClosedSession; private static Session etap[] = new Session[10]; //public void writeObject(){} Zachotka(Scanner eye) { this.name = eye.next(); this.fam = eye.next(); this.otch = eye.next(); this.kyrs = eye.nextInt(); this.grope = eye.nextInt(); this.ClosedSession = eye.nextInt(); for (int i = 0; i < ClosedSession; ++i) { etap[i] = new Session(eye); } } } public static void main(String[] args) throws FileNotFoundException { try { FileInputStream in = new FileInputStream("input.txt"); Scanner eye = new Scanner(in, "cp1251"); eye.useDelimiter("[-.,:=_;()?!\" \t\n\r]+"); Zachotka NZ = new Zachotka(eye); FileOutputStream out = new FileOutputStream("Zachotka.xml"); XMLEncoder xmlEncoder = new XMLEncoder(out); xmlEncoder.writeObject(NZ); xmlEncoder.flush(); xmlEncoder.close(); } catch (IOException e) { System.out.printf("Ошибка ввода"); } } } Как, собственно надо описать класс, чтобы он сериализовался с помощью XMLEncoder ? Тему перемещаю. |
13.10.2012, 23:05 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Можете просмотреть аналогичные темы, это в большинстве случаев полезно Убрать повторение отображаемых объектов. Где ошибка? (Java) Программа на Java |
15.10.2012, 19:39 | #2 (permalink) |
Member
Регистрация: 14.12.2010
Сообщений: 37
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 15
|
Собственно, разобрался, хотя и убил кучу времени. Использование XMLEncoder и XMLDecoder требует оформления сериализуемого класса по правилам JavaBean: Каждое поле класса должно иметь get и set методы в соответствии с соглашением об именах, класс должен иметь конструктор без параметров и т. д. в общем,
|
15.10.2012, 21:28 | #3 (permalink) |
VIP user
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
|
Тема закрыта по просьбе автора.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|