2014-02-21 1 views
-1

Java 프로그램이 실행 중일 때 일부 클래스를 저장하고 싶습니다. 그래서 프로그램을 다시 시작하면로드 할 수 있습니다. 3 개의 클래스 중 2 개의 클래스에서 잘 작동합니다 (save() 코드는 saveURL을 제외한 모든 클래스에서 동일합니다). 하지만이 중 하나는 몇 가지 문제가있는 것 같습니다. wierd thing은 save() 메서드가 실행되는 동안 처음 2-3 번 작동하지만 오류가 발생하기 시작합니다. 메서드 호출은 5-10 초 간격으로 나타나므로 문제가되어서는 안된다. 무엇을 할 수 있습니까? 나는 이미 .. PageLayoutMedia 설정 "Serializable를 구현"을Java Objectwriter, Save Classes

@SuppressWarnings("serial") 
public class DataManager implements Serializable{ 

private LinkedList<PageLayoutMedia> mediaPages = new LinkedList<PageLayoutMedia>(); 

public Datamanager(...){ ... } 

    private void privateSave(){ 
    try{ 
     //delete old save file 
     MyFileWriter.deleteFile(saveURL); 
     // Open a file to write to 
     FileOutputStream saveFile=new FileOutputStream(saveURL); 
     // Create an ObjectOutputStream to put objects into save file. 
     ObjectOutputStream save = new ObjectOutputStream(saveFile); 

     // Now we do the save. 
     save.writeObject(mediaPages); 

     // Close the file. 
     save.close(); // This also closes saveFile.   
    } 
     catch(Exception e){ 
     // if we land here - we got an error 
     } 
    } 

시나리오 :

  • 1 저장() mediaPages 초기화하지만 비어 : 전체
  • 2 저장() mediaPages을 저장 한을 가지고 요소 : 저장 완료
  • 3 번째 save() mediaPages에는 두 개의 요소가 있습니다. (

    @SuppressWarnings("serial") 
    public abstract class PageLayout implements Serializable{ 
    
    private long ID; 
    private String URL; 
    protected static String backgroundColor; 
    protected static Dimension dim; 
    protected static String mediaURL; 
    
    public PageLayout(Long ID, String URL) {  
        ... 
    } 
    } 
    
    
    @SuppressWarnings("serial") 
    public abstract class PageLayoutMedia extends PageLayout{ 
    private AnzeigeZeitraum zeitraum; 
    protected Dimension mediaDim; 
    protected String mediaURL; 
    protected int borderTop; 
    
    public PageLayoutMedia(Long ID, String URL, AnzeigeZeitraum zeitraum, Dimension mediaDim, String mediaURL) { 
    super(ID, URL); 
    ... 
    } 
    } 
    
    @SuppressWarnings("serial") 
    public class PageLayoutFullpicture extends PageLayoutMedia { 
    
    public PageLayoutFullpicture(AnzeigeZeitraum zeitraum, Dimension mediaDim, String mediaURL, Long ID, String URL) { 
    super(ID, URL, zeitraum, mediaDim, mediaURL); 
    ... 
    } 
    } 
    
+0

'PageLayoutMedia'의 내용을 추가하십시오. – Smutje

+0

그리고 오류가 무엇입니까? 아마도 '오류가 발생했습니다. 여기에 착륙하는 경우'오류를 실제로 기록하는 것으로 대체해야합니다. 그런 다음 결과를 질문에 붙여 넣으십시오. – kdgregory

답변

1

가정 : 3이 저장에서, 당신의 PageLayoutMedia 객체가 Serializable가 아닌 값이 포함되어 있습니다.

+0

그게 전부 였어! PageLayoutMedia는 추상적이며 PageLayoutPicture는 저장된 LinkedList mediaPages에 저장되었으며 PageLayoutPicture는 내가 작성한 직렬화 가능 클래스에 대한 필드 참조를 나타냅니다. 이 클래스에 Serializable을 추가하면 모든 것이 잘 작동합니다. 고마워요! – user2078872