Guten Tag,
als Übungsaufgabe soll ich eine Rohform einer Studentenverwaltung programmieren, wo man Studenten(Vorname, name, Matrikelnummer) eintragen kann, und diese dann in einer .txt-Datei gespeichert werden, und beim erneuten Aufruf einer StudentenVerwaltung wieder geladen werden.
Ich poste einfach ma den Code:
Hier der Error-Log:
Ich blicke irgendwie nichtmehr durch, die Klasse StudentenAdresse implementiert doch das Interface Serializable, darum versteh ich net wieso eine NotSerializableException geworfen wird..
Danke schonmal,
Grüße und frohes Neues so btw =)
als Übungsaufgabe soll ich eine Rohform einer Studentenverwaltung programmieren, wo man Studenten(Vorname, name, Matrikelnummer) eintragen kann, und diese dann in einer .txt-Datei gespeichert werden, und beim erneuten Aufruf einer StudentenVerwaltung wieder geladen werden.
Ich poste einfach ma den Code:
Code:
//Datei:StudentenVerwaltung.java
import java.io.*;
import java.util.*;
public class StudentenVerwaltung
{
class StudentenAdresse implements Serializable
{
private int matrikelnummer;
private String name;
private String vorname;
StudentenAdresse(int matrikelnummer,String name, String vorname)
{
this.matrikelnummer = matrikelnummer;
this.name = name;
this.vorname = vorname;
}
StudentenAdresse()
{
matrikelnummer = 0;
name = "unknown";
vorname = "unknown";
}
String getName()
{
return name;
}
String getVorname()
{
return vorname;
}
int getMatrikelnummer()
{
return matrikelnummer;
}
void print()
{
System.out.println("Initialisiere Ausgabe des Studenten...");
System.out.println("Vorname: " + vorname);
System.out.println("Name: " + name);
System.out.println("Matrikelnummer: " + matrikelnummer);
System.out.println("Ausgabe beendet.");
System.out.println();
}
}
private Map<Integer,StudentenAdresse> sammlung;
private ObjectOutputStream objectOut;
private ObjectInputStream objectIn;
public StudentenVerwaltung()
{
try
{
sammlung = new HashMap<Integer,StudentenAdresse>();
objectOut = new ObjectOutputStream(new FileOutputStream("Studenten.txt"));
objectIn = new ObjectInputStream(new FileInputStream("Studenten.txt"));
load();
}
catch(Exception e)
{
e.getMessage();
}
}
public void add(int matrikelnummer, String vorname, String name)
{
StudentenAdresse s = new StudentenAdresse(matrikelnummer,name,vorname);
sammlung.put(s.getMatrikelnummer(),s);
}
public void get(int matrikelnummer)
{
sammlung.get(matrikelnummer).print();
}
public void save() throws Exception
{
List<StudentenAdresse> list = new ArrayList<StudentenAdresse>(sammlung.values());
for(StudentenAdresse e : list)
{
objectOut.writeObject(e);
}
}
private void load() throws Exception
{
StudentenAdresse tmp = new StudentenAdresse();
while((tmp=(StudentenAdresse)objectIn.readObject()) != null)
{
sammlung.put(tmp.getMatrikelnummer(),tmp);
}
}
protected void finalize()
{
try
{
objectOut.close();
objectIn.close();
}
catch(Exception e)
{
e.getMessage();
}
}
}
Code:
//Datei: Test.java
public class Test
{
public static void main(String[] args)
{
try
{
StudentenVerwaltung s1 = new StudentenVerwaltung();
s1.add(12345,"test1a","test1b");
s1.add(123456,"test2a","test2b");
s1.add(567891,"test3a","test3b");
s1.get(12345);
s1.get(123456);
s1.get(567891);
s1.save();
StudentenVerwaltung s2 = new StudentenVerwaltung();
System.out.println("Neues Objekt der Verwaltung");
s2.get(12345);
s2.get(123456);
s2.get(567891);
}
catch(Exception e)
{
try
{
System.out.println("Ein unerwarteter Fehler ist aufgetreten!");
PrintStream p1 = new PrintStream(new FileOutputStream("Error.txt"));
System.setErr(p1);
e.printStackTrace();
}
catch(Exception z)
{
System.out.println("Fehler beim Schreiben!");
}
}
}
}
Hier der Error-Log:
Code:
//Datei: Error.txt
java.io.NotSerializableException: StudentenVerwaltung
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at StudentenVerwaltung.save(StudentenVerwaltung.java:86)
at Test.main(Test.java:19)
Ich blicke irgendwie nichtmehr durch, die Klasse StudentenAdresse implementiert doch das Interface Serializable, darum versteh ich net wieso eine NotSerializableException geworfen wird..
Danke schonmal,
Grüße und frohes Neues so btw =)