Java - проблема с сериализацией ImageIcon (последняя часть игры) - PullRequest
1 голос
/ 25 сентября 2010

Я работаю над своей игрой почти без перерыва с 11 утра.И я почти закончил.

Но я получаю сообщение об ошибке всякий раз, когда я пытаюсь сериализовать и десериализовать мои данные ...

Там "игра запущена"класс, расширяющий JFrame.И это содержит другие классы, которые являются сериализуемыми.Теперь, когда я пытаюсь сериализовать эти объекты в файл (или прочитать их обратно в программу), я получаю ошибку.

Вот суть этого:

java.io.IOException: failed to load image contents
at javax.swing.ImageIcon.writeObject(ImageIcon.java:418)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:416)
at javax.swing.JLabel.writeObject(JLabel.java:890)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)

** IsМожно ли сериализовать ImageIcons?(Мой учитель сказал мне «да», поэтому я и использовал их. **

Если это имеет значение, я объявил / инициализировал образы в моем сериализуемом классе:

private final Image heroIcona = new ImageIcon("heroIcon.png").getImage();

1 Ответ

1 голос
/ 13 июля 2011

Вам нужно использовать фактический ImageIcon и не преобразовывать его в Image (поскольку ImageIcon - это тот, который реализует Serializable).

  private ImageIcon heroIcona = new ImageIcon("heroIcon.png");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...