ObjectInputStream: ClassNotFoundException

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
nabend,

ich versuche gerade ein vorher erfolgreich serialisiertes Objekt wieder einzulesen.

Code:
public void readPerson(String pfad) {
		File posFile = new File(pfad+"/position.safe");
        if(!posFile.exists()) {
            return;
        }
        try {
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(posFile));
        Object obj = ois.readObject();
        
        if(obj instanceof Person) {
            System.out.println(((Person) obj).getFileName());
        }
        ois.close();
        } catch (FileNotFoundException fnfe) {
            fnfe.printStackTrace(); 
        }catch(IOException io) {
            io.printStackTrace();
        } catch(ClassNotFoundException cnfe) {
            cnfe.printStackTrace();
        }
	}

die Klasse Person, enthält nur getter und setter zu Vor und Nachname und Adresse. Spielt aber sowieso wohl keine Rolle, ich bekomme nämlich folgendes

Code:
java.lang.ClassNotFoundException: load.Person
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:289)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:247)
	at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:604)
	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1575)
	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
	at main.MyModell.readPerson(MyModell.java:80)
	at main.MyModell.<init>(MyModell.java:31)
	at main.MyModell.main(MyModell.java:124)

beim Ausführen der Zeile "Object obj = ois.readObject();". Was ist da falsch?
 
wie genau speicherst du denn?

ich mach das immer so:

Code:
public class Controller {

private DataStorageT data;

...

public void saveData(String filename) {
	try {
		ObjectOutputStream out = new ObjectOutputStream(
			new FileOutputStream(filename,false));

		out.writeObject(data);
		out.flush();
		out.close();
	} catch (Exception e) {
	}//try
}//saveData

public void loadData(String filename) {
	ObjectInputStream in;
		try {
			in = new ObjectInputStream(new FileInputStream(filename));
			data = (DataStorage) (in.readObject());
			in.close();
		} catch (Exception e) {
		}//try
}//loadData
 
Das ist kein Problem der readPerson-Methode, sondern ein Classpath-Problem: die VM, in der main.MyModell.readPerson ausgeführt wird, kann offenbar die Klasse load.Person nicht finden.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben