2013-04-01 77 views
-1

我試圖通過使用ObjectOutputStreamObjectInputStream發送幾個對象,通過java.net.Socketjava.net.ServerSocket,但我遇到過這個問題。我試圖發送的對象不可序列化。我試過將它們作爲String發送,但無法投射。任何解決此問題的方法?通過套接字發送不可序列化的對象

編輯:

我一直在尋找通過問題的堆棧跟蹤,並發現它是由一個JLabel拋出。我認爲這很奇怪,因爲JLabel實現了Serializable。但是當我通過eclipse檢查了JavaDocs並且發現錯誤被public boolean updateImage(ect..)拋出的那一行,並且意識到這是由於Icon造成的。有什麼辦法可以避免這個問題?

+0

對象是什麼類型,爲什麼它們不可序列化? –

+0

@MattBall com.apple.laf.AquaInternalFrameUI。我正在嘗試發送JInternalFrames – TheNerdyCoder

+1

與一個系統上的用戶界面和硬件密切相關的東西如何在遠程系統上重組爲一個有效的對象?如果你想完成這樣的事情,你需要製作你自己的狀態傳輸對象來封裝對象在源代碼上的有意義和可移植性,然後在目標系統上創建一個新的對象,該對象在該上下文中具有相同的有效狀態。 –

回答

0

您需要實現Serializable接口隊友;) 看看這裏:http://docs.oracle.com/javase/1.5.0/docs/api/java/io/Serializable.html

您需要實現的類,你正在嘗試通過套接字發送對象的這個接口。

+0

但是如果我試圖發送的對象不能改變呢?我發送一個JInternalFrame,而com.apple.laf.AquaInternalFrameUI $ 6 $ 1類繼續拋出異常。 – TheNerdyCoder

+1

_why_你試圖通過套接字發送一個UI組件嗎? –

+0

你不應該通過像這樣的套接字類,GUI類發送..你應該發送信息類。根據信息的整體結構製作自己的課程。而在套接字的另一點上,您將對象轉換爲對象,然後將這些信息應用於JInternalFrame,不要通過套接字發送框架本身。 – TiagoM

2

有一個響亮警告Javadoc中的每個Swing組件關於不序列化Swing組件。閱讀。你應該做的是序列化相應的模型。

+0

我的確讀過了JavaDocs,它唯一要說的關於序列化的事情是,來自swing的序列化對象不會與其他Swing版本兼容。 – TheNerdyCoder

相關問題