# JAXB Unmarshal  - Kein "default Constructor"



## FrankProduction (15. Dez 2013)

Hallo alle zusammen,

bin mal wieder stecken geblieben in einem meiner Programme, die ich gerade "versuche" zu schreibe. 
Naja, ich möchte ein Object (das über eine Liste von Objekten verfügt) in einer XML Datei abspeichern. Das klappt super.

Jedoch möchte ich nun aus dieser XML Datei wieder mithilfe der "JAXB.unmarshal(file, DatenBank.class); Methode" mein Ursprungsobjekt wieder erhalten.
Leider stoße ich auf eine Fehlermeldung:

Information: No default constructor found on class zaehlerstandrechner.DatenObject

Ich kann mir dieses Problem echt nicht erklären, vor allem weil es in allen Beispielen im Netz auch ohne StandardKonstruktor gelöst wurde....


```
//Erstelle einfaches Objekt
DatenObject  newObject = new DatenObject(gas, stromOG, stromEG, warmzaehlerOG, warmzaehlerEG, wasserGesamt, wasserWarmGesamt, wasserWarmOG, wasserKaltOG, notizen);

//Erstelle DatenBankObject, was newObject von oben enthalten soll
 DatenBank myDaten = new DatenBank();

 //Schreibe newObject in myDaten
myDaten.addObject(newObject);


//Schreibe myDaten in XML
File xmlFile = new File("mydaten.xml");
JAXB.marshal( myDaten, xmlFile );

//versuche XML Datei in Objekt zu schreiben
 JAXBContext jc = null;
Unmarshaller unmarshaller = null;

try {
 jc = JAXBContext.newInstance(DatenBank.class);
unmarshaller = jc.createUnmarshaller();
DatenBank daten2 = (DatenBank) unmarshaller.unmarshal(xmlFile);
   
 } catch (JAXBException ex) {
 Logger.getLogger(AddObject.class.getName()).log(Level.SEVERE, null, ex);
}
```


So und dann gibt es noch die DatenObject Klasse:

```
public class DatenObject {
    
    
    public DatenObject(double gas_, double stromOG_, double stromEG_, double warmzaehlerOG_, double warmzaehlerEG_, double wasserGesamt_, double wasserWarmGesamt_, double wasserWarmOG_, double wasserKaltOG_, String notizen_)
  
    {
        
        super();
        
        this.gas = gas_;
        this.stromOG = stromOG_;
        this.stromEG = stromEG_;
        this.warmzaehlerOG = warmzaehlerOG_;
        this.warmzaehlerEG = warmzaehlerEG_;
        this.wasserGesamt = wasserGesamt_;
        this.wasserWarmGesamt = wasserWarmGesamt_;
        this.wasserWarmOG = wasserWarmOG_;
        this.wasserKaltOG = wasserKaltOG_;
        this.notizen = notizen_;
       
        
        //Zu berechnen
        
        this.wasserWarmEG = this.wasserWarmGesamt - this.wasserWarmOG;
        this.wasserKaltEG = this.wasserGesamt - this.wasserWarmGesamt - this.wasserKaltOG;
    }
    
    public double gas;
    public double stromOG;
    public double stromEG;
    public double warmzaehlerOG;
    public double warmzaehlerEG;
    public double wasserGesamt;
    public double wasserWarmGesamt;
    public double wasserWarmOG;
    public double wasserKaltOG;
    public String notizen;
    
    //Zu Berechnen
    public double wasserWarmEG;
    public double wasserKaltEG;
        
}
```

Und die DatenBank-Klasse:

```
@XmlRootElement(name="DatenBank")
public class DatenBank {
    
    
     public List<DatenObject> datenList;
    
     
     
     public List<DatenObject> getAlbumList() {
    if (datenList == null) {
      datenList = new LinkedList<DatenObject>();
    }
    return datenList;
  }
     
      public void addObject(DatenObject object_) {
          if(this.datenList == null)
          {
              this.datenList = new ArrayList<DatenObject>();
          }
        this.datenList.add(object_);
  } 
      
 
    public List<DatenObject> getItems() {
        return datenList;
    }

    
}
```

Leider tritt bei mir im diese oben genannte Fehlermeldung auf. Was habe ich DatenObject falsch gemacht?

Vielen, vielen Dank für eure Mühe,

Nils


----------



## F.S.WhiTeY (15. Dez 2013)

Wenn sich das Thema wirklich erledigt hat, dann wäre es nett wenn du deine Lösung auch hier präsentieren würdest.

Bei mir wird der Thread nämlich als abgeschlossen angezeigt.

LG


----------



## FrankProduction (15. Dez 2013)

Gut, mache ich.
Problem bestand darin, dass ich einen eigenen Konstruktor in meiner Klasse "DatenObject" verwendet habe. Diesen habe ich in wieder entfernt, einen Standard Konstruktor daraus gemacht und die Funktionen die er eigentlich übernehmen sollte über eine 2. Methode gelöst.

Nils


----------

