2

Java プログラムで XMLEncoder を使用しようとしていますが、java.lang.InstantiationException が発生します。以下は、私が使用している私のコードです:

   /*
       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 の 2 つのクラスがあります。どちらのクラスも Serializable を実装しています。ClassA には ClassB の ArrayList があります。両方のクラスのすべてのフィールドには、getter メソッドと setter メソッドがあります。正確なエラー (スタック トレース) は次のとおりです。

 java.lang.InstantiationException: classA continuing...

 java.lang.exception :XMLEncoder:discarding statement XMLEncoder.writeObject(classA);
 continuing.

何が問題なのか、これらのエラーが何を意味するのかを理解できません。コードを修正して機能させるにはどうすればよいですか?

ありがとう。

4

1 に答える 1

5

XMLEncoder はそれをシリアル化するために JavaBeans オブジェクトを必要とするため、ClassA と ClassB で public デフォルト コンストラクタ (引数なし) を定義する必要があります。

JavaBeans 規約はこちら.

于 2014-07-13T17:58:46.063 に答える