0

Мне нужно сериализовать ConcurrentLinkedQueue.ConcurrentLinkedQueue: NotSerializableException

public class Service implements Serializable { 
    private static Queue<Message> messages = new ConcurrentLinkedQueue<>(); 

    public class Serialize { 
     public static Queue<Message> getMessages() 
     { 
      return messages; 
     } 
    } 
} 

Попытка:

FileOutputStream fos = new FileOutputStream("filename"); 
ObjectOutputStream oos = new ObjectOutputStream(fos); 

oos.writeObject(Service.Serialize.getMessages()); 

Результат:

java.io.NotSerializableException: server.Service $ 1 в java.io.ObjectOutputStream.writeObject0 (ObjectOutputStream.java:1184) по адресу java.io.ObjectOutputStream.defaultWriteFields (ObjectOutputStream.java:1548) по адресу java.io.ObjectOutputStream.defaultWriteObject (ObjectOutputStream.java:441) на java.util.concurrent.ConcurrentSkipListMap.writeObject (ConcurrentSkipListMap.java:1430) на sun.reflect.NativeMethodAccessorImpl.invoke0 (нативный метод) при солнце .reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) на sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) на java.lang.reflect.Method.invoke (Method.java:497) при java.io.ObjectStreamClass.invokeWriteObject (ObjectStreamClass.java:988) на java.io.ObjectOutputStream.writeSerialData (ObjectOutputStream.java:1496) в JA va.io.ObjectOutputStream.writeOrdinaryObject (ObjectOutputStream.java:1432) на java.io.ObjectOutputStream.writeObject0 (ObjectOutputStream.java:1178) на java.io.ObjectOutputStream.defaultWriteFields (ObjectOutputStream.java:1548) на java.io.ObjectOutputStream.writeSerialData (ObjectOutputStream.java:1509) на java.io.ObjectOutputStream.writeOrdinaryObject (ObjectOutputStream.java:1432) на java.io.ObjectOutputStream.writeObject0 (ObjectOutputStream.java:1178) на java.io.ObjectOutputStream.writeObject (ObjectOutputStream.java:348)

Как ???

ответ

0

Где-то в этом классе, который вы опустили на сообщение вы используете, и пытаетесь сериализовать анонимный внутренний класс , как ясно сказано.

+1

гордость whete - вы должны отказаться принять мой ответ, это абсолютно неправильно. – user1886323

+0

Проблема в том, что у меня нет анонимных классов. –

+0

Можете ли вы опубликовать определение класса сообщений. – user1886323

-1

Может быть, вы должны избавиться от внутреннего Serialize класса и поместить метод внутри него на службе ..

+0

Почему? Он не упоминается в сообщении об исключении. – EJP

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