bonjour, je vous demande de l'aide car je n'arrive pas à serialiser. Je cherche a faire une application simple qui consiste a mémoriser des nom de DVDs.
classe lanceur.java :
Classe GestionDvd :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import dvd.Dvd; import dvd.GestionDvd; public class lanceur { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub GestionDvd gestion = new GestionDvd(); Dvd dvd = new Dvd("titan", "action", "/local/image.jpg", "ce film raconte la guerre des titans"); Dvd dvd2 = new Dvd("terminator", "science fiction", "/local/terminator.jpg", "john conor doit sauver sa vie face à des terminators..."); System.out.println("titre dvd : "+dvd.getTitreDvd()); gestion.ajouterDvd(dvd); gestion.ajouterDvd(dvd2); //gestion.voirListDvd(); } }
Classe DVD :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76 package dvd; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.ArrayList; public class GestionDvd implements Serializable{ /** * */ private static final long serialVersionUID = 1L; ArrayList<Dvd> listDvd = new ArrayList<Dvd>(); public void ajouterDvd(Dvd dvd){ listDvd.add(dvd); try { FileOutputStream fichier = new FileOutputStream("Dvd.ser"); ObjectOutputStream oos = new ObjectOutputStream(fichier); oos.writeObject(listDvd); oos.flush(); oos.close(); } catch (java.io.IOException e) { e.printStackTrace(); } } public void supprimerDvd(Dvd dvd){ boolean resultat = false; resultat = listDvd.remove(dvd); if(resultat == true){ System.out.println("dvd"+dvd.getTitreDvd()+" supprimer avec succès"); try { FileOutputStream fichier = new FileOutputStream("Dvd.ser"); ObjectOutputStream oos = new ObjectOutputStream(fichier); oos.writeObject(listDvd); oos.flush(); oos.close(); } catch (java.io.IOException e) { e.printStackTrace(); } }else{ System.out.println("dvd"+dvd.getTitreDvd()+" non trouvé ou non présent"); } } public void voirListDvd(){ for(int i=0;i<listDvd.size();i++){ System.out.println("dvd "+i+" "+listDvd.get(i).getTitreDvd()); System.out.println("dvd "+i+" "+listDvd.get(i).getDescriptifDvd()); System.out.println("dvd "+i+" "+listDvd.get(i).getStyleDuDvd()); System.out.println("dvd "+i+" "+listDvd.get(i).getImageDuDvd()); } try { FileInputStream fichier = new FileInputStream("Dvd.ser"); ObjectInputStream ois = new ObjectInputStream(fichier); Dvd dvd = (Dvd) ois.readObject(); System.out.println("dvd "+dvd.getTitreDvd()); System.out.println("dvd "+dvd.getDescriptifDvd()); System.out.println("dvd "+dvd.getStyleDuDvd()); System.out.println("dvd "+dvd.getImageDuDvd()); ois.close(); } catch (java.io.IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
et j'ai ça comme erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 package dvd; public class Dvd { private String titreDvd; private String styleDuDvd; private String imageDuDvd; private String descriptifDvd; public Dvd(String titreDvd, String styleDuDvd, String imageDuDvd, String descriptifDvd) { this.titreDvd = titreDvd; this.styleDuDvd = styleDuDvd; this.imageDuDvd = imageDuDvd; this.descriptifDvd = descriptifDvd; } public String getTitreDvd() { return titreDvd; } public void setTitreDvd(String titreDvd) { this.titreDvd = titreDvd; } public String getStyleDuDvd() { return styleDuDvd; } public void setStyleDuDvd(String styleDuDvd) { this.styleDuDvd = styleDuDvd; } public String getImageDuDvd() { return imageDuDvd; } public void setImageDuDvd(String imageDuDvd) { this.imageDuDvd = imageDuDvd; } public String getDescriptifDvd() { return descriptifDvd; } public void setDescriptifDvd(String descriptifDvd) { this.descriptifDvd = descriptifDvd; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 titre dvd : titan java.io.NotSerializableException: dvd.Dvd at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1181) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347) at java.util.ArrayList.writeObject(ArrayList.java:710) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1429) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1175) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347) at dvd.GestionDvd.ajouterDvd(GestionDvd.java:22) at lanceur.main(lanceur.java:16) java.io.NotSerializableException: dvd.Dvd at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1181) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347) at java.util.ArrayList.writeObject(ArrayList.java:710) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988)
Partager