java.io.NotSerializableException: java.awt.image.BufferedImage
Ceci est l'exception levé lors de ma serialisation de ma classe Playlist.
Le mot clé transient sert a ne pas serialiser l'object en question. Je voulais voir quel objet ne se serialisait pas, et cela ne vient pas de mes objets internes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public class PlayList extends JList<String> { private transient ArrayList <File>list; private transient Vector <String>v = new Vector<>(); private transient String name=""; public PlayList(String na){ this.setBackground(Color.red); list = new ArrayList<>(); name = na; }
Ma jlist est associé un à jscrollpane et à un vecteur.
Je n'ai as mis d'implements serializable car ma playlist extends JList, qui l'implemente.
L'image est dans une classe boutton. Je ne comprend pas en quoi elle interragit avec celle-ci. Ma classe Fenetre contient different pannnels qui contiennent des boutons, sauf le panel principal qui contient un scrollpane. Merci de bien vouloir m'éclairer, je ne vois pas d'où vient le problème.
EDIT 1 : En mettant le code dans un projet, tout se serialise à merveille... Est ce que je dois rajouter implements serializable à toutes mes classe ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public static void Serialiser(PlayList pl, File aSerial){ try{ FileOutputStream output ; output = new FileOutputStream(aSerial); ObjectOutputStream oos = new ObjectOutputStream(output); oos.writeObject(pl); oos.flush(); oos.close(); }catch (java.io.IOException e){ e.printStackTrace(); } }EDIT 2 : voici le code de deserialisation/serialisation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public static PlayList Deserialiser(File aDeserialiser){ PlayList deserialise = null ; try{ FileInputStream inputS = new FileInputStream(aDeserialiser); ObjectInputStream ois = new ObjectInputStream(inputS); deserialise = (PlayList) ois.readObject(); }catch ( java.io.IOException | ClassNotFoundException e) { e.printStackTrace(); } return deserialise; }
Partager