# ich habe ein stream problem



## Manuela (23. Aug 2008)

Hallo,
mein problem ist folgendes:

ich habe ein class Auftrag , in dieser Klasse habe ich 
    ein int , ein String[] und 2 Hashtable<String,String>


jetzt will ich die klasse an mein Serverprogramm schicken.

also habe ich die gleiche Klasse auch in den Server geschrieben.

String[] mein ={"Hallo","oder"};
Hashtable <String,String> test1,test2; // Sind natürlich mit daten gefüllt.
ObjectOutputStream os = new ObjectOutputStream(sock.getOutputStream()); 
Auftrag auf = new Auftrag(2,mein, test1,test2);
os.writeObject(auf);  // hier bekomme ich java.io.NotSerializableException:
os.flush();



was mache ich falsch?


Gruß Manuela




[/code]


----------



## pc-world (23. Aug 2008)

Deine Klasse muss _Serializable_ implementieren.

Also so:

```
class DeineKlasse implements Serializable {
 //Die Klasse...
}
```

java.sun.com/javase/6/docs/api/java/io/Serializable.html


----------



## Manuela (23. Aug 2008)

Hallo 
ich habe meine Klasse implements Serializable.

und der Fehler kommt.

Gruß Manuela


----------



## Kim Stebel (23. Aug 2008)

code der ganzen klasse posten!
felder die nicht serialisiert werden sollen müssen transcient deklariert sein, die typen aller anderen müssen ebenfalls serializable implementieren.


----------



## Kim Stebel (23. Aug 2008)

code der ganzen klasse posten!
felder die nicht serialisiert werden sollen müssen transcient deklariert sein, die typen aller anderen müssen ebenfalls serializable implementieren.


----------



## Manuela (23. Aug 2008)

Code


```
package werk;


import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.logging.Level;
import java.util.logging.Logger;


public class Auftrag_bearbeitung implements Serializable {

   

    public void saveOrder(){
        ObjectOutputStream os = null;
        try {
            
            os = new ObjectOutputStream(Client.sock.getOutputStream());

                  String[] test = {"Halt","Hut"};
    
                   Auftrag auf = new Auftrag();
                    auf.setNr(2);  // int
                    auf.setText(test);  // String[]
                    auf.setTable_1(getTable_1());  // 1. Hashtable
                    auf.setTable_2(getTable_2()); //  2. Hashtable
              
             os.writeObject(auf);  // hier bekomme ich java.io.NotSerializableException    
        
             os.flush();
        } catch (IOException ex) {
            Logger.getLogger(Auftrag_bearbeitung.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                os.close();
            } catch (IOException ex) {
                Logger.getLogger(Auftrag_bearbeitung.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
 
           
    }
```


Hier ist die Klasse 

Gruß Manuela


----------



## tuxedo (23. Aug 2008)

Das zu serialisierende Objekt "auf" (Klasse "Auftrag") muss Serialiable implementieren. Nicht die klasse die serialisiert ...

- Alex


----------



## Manuela (23. Aug 2008)

Danke Alex,

genau das war es. 

Danke.


----------

