# Übertragung selbstdefinierter Klassen in der RMI



## chrisi3210 (6. August 2009)

Hallo !

Beim Versuch, eine selbstdefinierte Klasse zu übertragen erhielrt ich folgende Fehlermeldung:

java.rmi.MarshalException: error marshalling arguments; nested exception is:
java.io.NotSerializableException: Math.matatyp
at sun.rmi.server.UnicastRef.invoke(Unknown Source)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(Unknown Source)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(Unknown Source)
at $Proxy0.seta(Unknown Source)
at Math.imathclient.main(imathclient.java:41)
Caused by: java.io.NotSerializableException: Math.matatyp
at java.ibjectOutputStream.writeObject0(Unknown Source)
at java.ibjectOutputStream.writeObject(Unknown Source)
at sun.rmi.server.UnicastRef.marshalValue(Unknown Source)

Irgendwie gibt es ein Problem mit der Serilasierung des Objektes.

Kann mir jemand erklären, wie man selbstdefinierte Klassen in der RMI übertragen werden können und wie sie hierfür serialisiert werden müssen?


----------



## Thomas Darimont (6. August 2009)

Hallo,

Implementiert Math.matatyp Serializable bzw. Externalizable? Sind alle Attribute an diesem Type serialisierbar?

Gruß Tom


----------



## chrisi3210 (6. August 2009)

Nein. Wie müsste denn eine solche Klasse mit java.io.Serializable implemtiert werden, damit das funktioniert? 

Einfach 

class matatyp implements Serializeable{

} ?


----------



## javaDeveloper2011 (14. April 2011)

Hallo chrisi3210,

Normalerweise müsste es so gehen, da Objekte schließlich nicht nur bei der persistenten Speicherung serialisiert werden!

Wenn die genaue Implementierung von matatyp zur *Kompilierzeit noch nicht bekannt* ist, müsstest du ein Interface definieren, das sich von Serializable ableitet, z.B. matatypInterface.

matatype müsste dann Serializabe und dein eigenes Interface implementieren.

*Die Fehlermeldung scheint mir aber so als würde deine Lösung reichen.*

javaDeveloper2011


----------

