2014-04-07 2 views
0

것입니다 : 내가 시도하는 것은 출력 파일에 속성예외 : A 출력 파일에 쓰기

private static final long serialVersionUID = 1L; 
private TreeSet<Product> tree = new TreeSet<Product>(); 
private Iterator<Product> iterator ; 

와 같이있는 클래스의 객체를 작성하는 것입니다

java.io.NotSerializableException: java.util.TreeMap$KeyIterator 
at java.io.ObjectOutputStream.writeObject0(Unknown Source) 
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source) 
at java.io.ObjectOutputStream.writeSerialData(Unknown Source) 
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source) 
at java.io.ObjectOutputStream.writeObject0(Unknown Source) 
at java.io.ObjectOutputStream.writeObject(Unknown Source) ??? 

클래스는 Serializable을 구현합니다.

public void scrieArbore() { 
    try { 
     ObjectOutputStream outStreamWarehouse = new ObjectOutputStream(new FileOutputStream(new File(WAREHOUSE_FILENAME))); 
     outStreamWarehouse.writeObject(h); 

     outStreamWarehouse.flush(); 

     outStreamWarehouse.close(); 

     System.out.println("Safely written warehouse"); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

답변

2

문제는 Iterator<Product> iterator 필드입니다. IteratorSerializable을 구현하지 않습니다.

이 문제를 해결하는 방법은이 필드를 transient으로 표시하는 것입니다.

private transient Iterator<Product> iterator;