2012-06-04 5 views
0

Я получаю java.io.notserializableException ошибки при попытке записать объект на сервер в классе простирающегося jpanel и реализующий serializable, но она работала хорошо, если расширение jframe.Я получаю ошибку Java.io.notserializableException

Здесь есть код:

//to send to server 
objectoutputstream out = new objectoutputstream(socket.getoutputstream()); 
out.writeobject(myobject); 

//to receive in server 
objectinputstream in = new objectinputstream(socket.getinputstream()); 
in.readobject(); 

Благодарим за любую помощь.

+1

Пожалуйста, предоставьте реализацию 'myobject'. Любой сериализованный объект должен реализовывать интерфейс Serializable, и любой агрегированный объект в нем должен также реализовывать этот интерфейс (и т. Д.). – Xeon

+0

Пожалуйста, отредактируйте ваше сообщение с правильным случаем. Java чувствительна к регистру, поэтому я тоже. – EJP

+0

Мне удалось проследить все другие объекты класса для реализации сериализуемых данных, и я, наконец, получил исключение: java.io.notserializableEXCEPTION java.lang.object, который подразумевает, что класс объекта также должен реализовывать сериализуемый интерфейс, но не имеющий доступа к классу объектов, который является «универсальным» классом, существующим в java-библиотеке. Так как я могу настроить это? Спасибо – Chibuzo

ответ

1

Ваша реализация JPanel (пример myobject) имеет ссылку (частное поле, например) на какой-либо другой объект, то есть не реализует Serializable. И это другой объект, вызывающий исключение.

2

От JPanel (Java 2 Platform SE v1.4.2), он говорит:

Предупреждение: Последовательные объекты этого класса не будут совместимы с будущими выпусками Swing. Текущая поддержка сериализации подходит для краткосрочного хранения или RMI между приложениями, использующими ту же версию Swing. Начиная с версии 1.4, в пакет java.beans добавлена ​​поддержка для долгосрочного хранения всех JavaBeans TM. См. XMLEncoder.

+0

+1 за цитирование этой ссылки, которую все, кажется, игнорируют, но это не объясняет 'NotSerializableException''. – EJP

1

Как @Xeon сказал, укажите impl для myobject. Поскольку вы сказали, что исключение распространяется на класс Object, это просто означает, что ваш класс или любое поле класса i.e (которое является объектом, а не типом по умолчанию) не реализует интерфейс Serializable. Также как вы создаете myobject там? просто прямо Объект myobject = ...
или myobject = .... ?

Просто убедитесь, что каждый реализует сериализуемый.

Класс объекта предоставляет методы, но не реализует этот сериализуемый интерфейс, в противном случае каждый объект в Java был бы сериализуемым по умолчанию!

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