2013-07-16 5 views
-1

ObjectOutputStream 및 FileOutputStream을 사용하여 객체를 직렬화하려하지만 클래스 이름에 오류가 표시됩니다.Java로 객체 직렬화

JFileChooser fc = new JFileChooser(); 
NewClientClass AddClient = new NewClientClass(IDNumber.getText(), FirstName.getText(), LastName.getText(), Address.getText(), DateOfBirth.getText(), Profession.getText()); 
     try { 
     int returnVal = fc.showSaveDialog(null); 
     if (returnVal == JFileChooser.APPROVE_OPTION) { 
      ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(fc.getSelectedFile().getAbsoluteFile())); 
      out.writeObject(AddClient); //the application crashes. 
      out.close(); 
      JOptionPane.showMessageDialog(null, "Successfully Saved"); 
     } 

새 클라이언트를 선언하고 텍스트 상자에서 데이터를 가져 오는 중입니다. 데이터가 제대로 저장된 디버깅을 체크, 유일한 문제는 개체를 파일에 쓸 때 저장됩니다.

도움이 필요하십니까?

감사 자세한 내용없이

+0

개체가 java.io.Serializable을 구현합니까? 오류 메시지를 게시하십시오. – Burkhard

+0

어떤 오류가 발생합니까 (Stacktrace)? – MaVRoSCy

+0

@MaVRoSCy 코드의 주석을 확인하십시오. –

답변

1

는 가장 가능성있는 원인은 NewClientClass에서 Serializable 인터페이스의 구현의 부족 : 클래스의

직렬화는 자바를 구현하는 클래스에 의해 유효하게됩니다. io. 시리얼 인터페이스. 이 인터페이스를 구현하지 않는 클래스는 해당 상태를 직렬화 또는 직렬화 해제하지 않습니다. 직렬화 가능 클래스의 모든 서브 타입 자체가 직렬화 가능합니다. 직렬화 인터페이스에는 메서드 나 필드가 없으며 에 대해서만 직렬화 가능이라는 의미를 식별 할 수 있습니다.

편집 :

당신과 같이 뭔가를 가정 :

public class NewClientClass 
{ 
    public NewClientClass (String idNumber, String firstName, String lastName, String address, String dateOfBirth, String profession) 
    { 
     ... 
    } 

} 

당신은 너무처럼해야 할 것 :

public class NewClientClass implements Serializable 
{ 
    public NewClientClass (String idNumber, String firstName, String lastName, String address, String dateOfBirth, String profession) 
    { 
     ... 
    } 
} 

그건이어야 모두 당신이 필요 do (해당 인터페이스를 포함하는 패키지를 가져 오는 것을 잊지 마십시오). Serializable 인터페이스는 등급을 표시하여 계량화합니다.

다시 예외가 무엇인지 언급하지 않았으므로 이것은 순전히 추측입니다.

+0

어디에서 NewClientClass를 편집해야합니까? –

+0

@NeilGambin : 답변을 수정했습니다. 나는 그것이 당신의 문제를 해결하기를 바랍니다. – npinti