我剛剛用java rmi完成了一個小程序,不知何故它不起作用。每次我想啓動服務器,我都會收到MarshalException。是否有任何重要的一點,我應該知道他們如何實現遠程方法調用的接口?我認爲有可能創建一個實現,但也包含一些額外的方法,如實現類中的構造函數或私有變量。如何避免Java RMI的MarshalException?
不應該這樣工作嗎?
問候
我剛剛用java rmi完成了一個小程序,不知何故它不起作用。每次我想啓動服務器,我都會收到MarshalException。是否有任何重要的一點,我應該知道他們如何實現遠程方法調用的接口?我認爲有可能創建一個實現,但也包含一些額外的方法,如實現類中的構造函數或私有變量。如何避免Java RMI的MarshalException?
不應該這樣工作嗎?
問候
爲了能夠傳遞你需要讓他們實現Serializable
對象。也許有一個默認的(無參數)構造函數(這不是序列化的必要條件)
正如helios指出的那樣,不僅是類,還有所有的字段層次結構(字段類和字段的類)必須Serializable
)
而且您必須測試您的類,試圖序列化它們(它通過RMI服務使用它們)。如果您的類實現了Serializable,但它包含一個不可序列化(非暫時)字段,kaboom! – helios 2011-01-10 15:12:22
造成的: 拋出java.lang.ClassNotFoundException: vsys.ue04.server.RemoteChargeImplementation
有你的問題。客戶需要該課程。
如果我的回答沒有解決問題,請提供有關異常的更多詳細信息 - 例如整個異常(包括消息和堆棧跟蹤);) – Bozho 2011-01-10 14:46:53