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 :

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 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
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();
		}
	}
}
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
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;
	}
}
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
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)