2013-04-01 2 views
-1

Я пытаюсь отправить несколько объектов по java.net.Socket и java.net.ServerSocket с помощью ObjectOutputStream и ObjectInputStream, но я столкнулся с проблемой. Объекты, которые я пытаюсь отправить, не являются сериализуемыми. Я пробовал отправлять их как String, но его нельзя отличить. Какие-либо проблемы вокруг этой проблемы?Отправка объекта без сериализации через Socket

EDIT:

Я просматривал StackTrace проблемы, и обнаружил, что это бросок JLabel. Я думал, что это странно, из-за того, что JLabel реализует Serializable. Но когда я проверил JavaDocs через eclipse и подошел к линии, где ошибка выкидывалась 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_ вы пытаетесь отправить компонент пользовательского интерфейса через сокет? –

+0

вам не следует отправлять через классы сокетов, такие как классы GUI .. вам следует отправлять информационные классы. создал свои собственные классы со всей структурой информации. И в другой точке сокета вы бросаете объект, а затем применяете эту информацию в JInternalFrame, не садитесь в кадр через сокет. – TiagoM

2

Существует громкий предупреждение в Javadoc каждого компонента Swing о несериализации компонентов Swing. Прочтите. Что вы должны делать, это сериализовать соответствующие модели .

+0

Я прочитал JavaDocs, и единственное, что он должен сказать о Сериализации, это то, что сериализованные объекты из swing не будут совместимы с другими версиями Swing. – TheNerdyCoder

Смежные вопросы