2013-07-16 28 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"); 
     } 

正如你所看到的,我聲明瞭一個新的客戶端並從文本框中獲取數據。數據存儲正確,因爲我檢查了tru調試,唯一的問題是將對象寫入文件。

請幫忙嗎?

感謝

+0

是否你的對象實現java.io.Serializable?請發佈錯誤消息。 – Burkhard

+0

你得到了什麼錯誤(堆棧跟蹤)? – MaVRoSCy

+0

@MaVRoSCy在代碼中檢查評論 –

回答

1

如果沒有進一步的細節,最有可能的罪魁禍首是來自NewClientClass缺乏Serializable接口的實現的:

類的串行化是通過實現 的Java類的功能。 io.Serializable接口。沒有實現這個接口的類將沒有任何狀態序列化或反序列化。 可序列化類的所有子類本身都是可序列化的。該 序列化接口沒有方法或字段,僅用於 確定的可序列化的語義。

編輯:

假設您有類似這樣:

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) 
    { 
     ... 
    } 
} 

這應該是所有你需要做(不要忘記導入包含該接口的軟件包)。 Serializable界面將標記你的班級seriliazation。

再一次,你沒有提到你得到了什麼異常,所以這是純粹的推測。

+0

在哪裏我在NewClientClass編輯嗎? –

+0

@NeilGambin:我已經修改我的答案。我希望它能解決你的問題。 – npinti