Problem beim Serialisieren

d4ex

Grünschnabel
Hallo!

Wie oben schon beschrieben habe ich ein Problem mit der Serialisierung eines Objectes.
Ich möchte gerne ein Object von einem Client zum Server senden. Das ganze funktioniert auch... bis auf ein Problem. Client und Server befinden sich in unterschiedlichen Packages...

Wenn ich das richtig verstanden hab muss ja, die Klasse die man über den ObjectStream versenden will, dem Server und der Clientversion zur Verfügung stehen und das Interface Serializable eingebunden haben.
Mein Client konnte die Klasse auch Serialisieren und sie zum Server senden. Doch als der Sie empfangen hat gabe es eine ClassNotFoundException (package des Clients).class not found...

Strings oder andere Primitive Datentypen kann ich versenden nur eben Klassen nicht...

Jemand ne Idee wie ich das beheben kann?
Schon mal Danke für die Hilfe :)
 
Was fliegt denn für eine Exception? Implementiert die zu übertragende Klasse Serializable? Hat die Klasse eine serializableUId?

REINHAUN!
 
Hallo,

hast du die Klassen der vom Client serialisierten Objekte auch ganz sicher auf dem Server im Classpath verfügbar?

Gruß Tom
 
Es funktioniert nun... aber irgendwie nicht so wie ich es gerne gewollt hätte :)

Ich habe eine Klasse "SendObject" (die soll Serialisiert und versendet werden Inhalt is ja nich wichtig...das interface ist implementier :))
Diese Klasse steht im package messu_client und im package messu_server zur Verfügung.
Das Versenden der Klasse ist kein Problem, doch wenn ich sie wieder auspacken will muss das ganze so aussehen... (nur ein Auzug)

package messu_server;

import java.net.*;
import java.io.*;
//Der import aus einer zur Verfügung gestellten .jar - File
import messu_client.SendObject;
...

InputStream in = socket.getInputStream();

ObjectInputStream os = new ObjectInputStream(new BufferedInputStream(in));
Object o = os.readObject();

if(o instanceof messu_client.SendObject){
SendObject obj = (messu_client.SendObject)o;
System.out.println(obj.toString());
}

So... um es kurz zu erklären... ich stelle hier dem Server das package des clients in einer .jar Datei zur Verfügung damit der sich aus diesem package die messu_client.SendObject Klasse nehmen kann. Funktioniert auch, ist aber umständlich finde ich.
Die Klasse SendObject befindet sich nämlich auch im package des Servers (messu_server.SendObject) aber die beiden sind nicht kompatibel... verstehe nicht warum :confused: sind ja die selben Klassen... nur das package stört...
Gehts anders? Oder muss ich es einfach so hinnehmen? Dann muss ich nämlich immer die Klasse des clients mitschleifen...

Nochmal Danke für die Hilfe es funktioniert ja aber man macht sich halt so seine Gedanken :>

mfg
Matthias
 
Wie kann denn eine Klasse in zwei packages sein? Normalerweise geht man her und packt zentrale Datentypen und Interfaces in ein JAR das sowohl Server als auch Client benutzen.

Gruß
Ollie
 
So hab ich es ja jetzt auch gemacht :) Nu brauch ich die Klasse eben nur noch einzubinden. War halt nur so das ein und die selbe Klasse in zwei unterschiedlichen packages war und beide nicht "gleich" waren. :mad:

*edit* Du hast aber recht, wenn ich darüber nachdenke was noch alles ins Project reinsoll ist es natürlich sinnvoller ein eigenes Package zu haben :)
 
Zuletzt bearbeitet:
Vor allem in ein eigenes Jar. Ist ganz hilfreich wenn man ab und zu mal über die Abhängigkeiten nachdenkt, die man so in seinem Projekt hat ;)

REINHAUN!
 

Neue Beiträge

Zurück