簡體   English   中英

ObjectInputStream.readObject()中的ClassNotFoundException

[英]ClassNotFoundException in ObjectInputStream.readObject()

我正在嘗試將客戶端應用程序傳遞的對象轉換為服務器應用程序中相同類的對象。

我目前在服務器應用程序中收到的錯誤是:

mei 02, 2012 11:44:43 PM server.UserThread process
SEVERE: null
java.lang.ClassNotFoundException: client.User

服務器通過Socket - > ObjectInputStream接收該對象。

所以我想知道你們是否可以幫助我將client.User類轉換為我的Server.User類。 唯一有效的方法是將包放在1個項目中,然后定義類的確切位置。

始終可以提供代碼。

將client.User類強制轉換為我的Server.User類

你不能。 他們不是同一個班級。 它們有不同的包裝。 他們是不同的。 如果要在服務器和客戶端之間共享類,則必須共享單個.class文件。 這可能意味着為共享內容創建第三個包。

這些類需要相同,因為一些用戶建議回答您的問題。 使用默認序列化過程來展平和膨脹對象似乎不是一個好選擇。 如果使用Externalizable接口而不是Serializable,則可以定義自己的協議,可以使用writeExternal和readExternal來自定義序列化過程。

如果您嘗試將對象從服務器發送到客戶端,我實際上不鼓勵使用對象流。 我可以建議Protobuff這樣做嗎?

Protobuff:

協議緩沖區是一種以高效且可擴展的格式編碼結構化數據的方法。 Google對幾乎所有內部​​RPC協議和文件格式都使用Protocol Buffers。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM