Problem beim Serialisieren von Java Klassen

AvS

Erfahrenes Mitglied
Hallo,

erstmal zur Einleitung : Ich habe ein Projekt mit 3 Packages(main, data, functions), in denen wiederum mehrere Klassen stehen. Nun habe ich in einer Klasse aus dem Package main einen Funktionsaufruf gestartet, die wiederum eine andere Funktion aus einem anderen Package ausführt, diese führt allerdings wieder eine andere Funktion aus dem dritten Package aus.
Allerdings bekomme ich eine ClassNotFoundException. Alles ist public und alle Packages sind richtig importiert (sonst würde Eclipse mir das ja anzeigen, dass was fehlt).

Hoffe ihr wisst woran es liegen kann. Bei Bedarf füge ich noch die jeweiligen Code-Schnipsel ein
 
Zeig mal den Stack Trace der Exception. Und wenns geht das Codestückchen welches in der Exception genannt ist.
 
und schau mal nach, ob die imports alles stimmen! Aber wie bereits erwähnt: den StackTrace der Exception bitte posten.
 
Java:
java.lang.ClassNotFoundException: Worte
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Unknown Source)
	at java.io.ObjectInputStream.resolveClass(Unknown Source)
	at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
	at java.io.ObjectInputStream.readClassDesc(Unknown Source)
	at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
	at java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.io.ObjectInputStream.readObject(Unknown Source)
	at java.util.ArrayList.readObject(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
	at java.io.ObjectInputStream.readSerialData(Unknown Source)
	at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
	at java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.io.ObjectInputStream.readObject(Unknown Source)
	at data.WhiteList.loadWL(WhiteList.java:43)
	at functions.Search.compareWL(Search.java:108)
	at graphics.SemHMenu$4.actionPerformed(SemHMenu.java:102)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.AbstractButton.doClick(Unknown Source)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
 
Okay,

hier die Code-Ausschnitte in der Folge, wie sie aufgerufen werden :

Java:
			public void actionPerformed(ActionEvent ev) {

				JFileChooser fileChooser = new JFileChooser(
						"../Lesehilfe/src/txtressourcen");

				if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
					try {
						JTextArea Tg = new JTextArea();
						File selectedFile = fileChooser.getSelectedFile();

						Tg.read(new FileReader(selectedFile), null);
						dataField.TA.setText(Tg.getText());
						Search.compareWL();
					} catch (IOException ex) {
						// CenterMiddlePanel.putText( ex.getMessage() );
					}
				}
			}

Die Search.compareWL() sieht so aus :

Java:
public static String compareWL() throws IOException {
		ArrayList<Worte> liste = WhiteList.loadWL();
		
		String t = "";
		
		String inhalt = dataField.TA.getText();
		for(Worte inhalte : liste)
		{
			if(inhalte.getName().equals(inhalt)) {
				t = t + inhalte + " \n";
				wordField.addString(t);

			}
		}
		return null;
	}

und die WhiteList.loadWL() so :

Java:
public static ArrayList<Worte> loadWL() throws IOException
	{
		try
		{
			FileInputStream fis = new FileInputStream("whitelist.ser");
			ObjectInputStream ois = new ObjectInputStream(fis);
			ArrayList<Worte> words = new ArrayList<Worte>();
			words = (ArrayList<Worte>) ois.readObject();
			ois.close();
			return words;
			}catch(ClassNotFoundException e)
		{
			e.printStackTrace();
		}
		return null;		
	}
 
Von wann ist denn die Serialisierte Datei? Hast du seitdem etwas geändert? Liegt das ganze überhaupt in Packages?
 
Ja, es liegt alles in Packages und die sind auch richtig importiert (zumindest zeigt mir Eclipse keine Fehler! diesbezüglich).
Die SUID ist schon etwas älter, dürfte aber danach keine Veränderungen danach gemacht haben. Wie kann ich denn selber eine erzeugen ? Die jetzige wurde automatisch eingesetzt.

Gruß

Edit : Der ClassNotFound-Fehler wird durch diese Zeile aufgerufen :

Java:
 words = (ArrayList<Worte>) ois.readObject();

Aber ich verstehe einfach nicht wieso ! Ich habe alle Objekte auch als ArrayList serialisiert, daher sollte die Deserialiserung auch so ablaufen oder ?

Zusatz : Die Datei whitelist.ser wurde allerdings mit einem anderen Projekt erstellt. Liegt dort die Fehlerquelle ? Also das Sachen mitserialisiert wurden, die das neue Programm nicht auswerten kann ?
 
Zuletzt bearbeitet:
Zurück