2016-04-25 14 views
0

Ich benutze XStream, um Data.xml-Dateien zu entpacken. Wenn ich es mit meiner Funktion main() ausführe, funktioniert es perfekt, aber wenn ich versuche, es über meine Boot-App auszuführen, bekomme ich eine UnknownFieldException.UnknownFieldException nur im Frühjahr Start-App

Verursacht durch: com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter $ UnknownFieldException: No such Feld workshop.tokenizer.data.Attributes.attribute ---- ---- Debugging-Informationen Nachricht: Keine solches Feld workshop.tokenizer.data.Attributes.attribute Feld: Attribut Klasse: workshop.tokenizer.data.Attributes erforderlich Typ: workshop.tokenizer.data.Attributes Konverter-Typ: com.thoughtworks.xstream.converters. reflection.ReflectionConverter Klasse [1]: workshop.tokenizer.data.DataObj Klasse [2]: java.util.ArrayList Wandler-Typ [1]: com.thoughtworks.xstream.converters.collections.CollectionConverter Klasse [3]: workshop.tokenizer.wrappers.DataObjects Version: 1.4.9

wenn ich dies Aufruf Verfahren, Erstellen von Hauptobjekt mit dieser Ausnahme nicht, aber wenn ich die gleiche Linie von „public Haupt static void ...“ nennen, es funktioniert perfekt

@RequestMapping(method = RequestMethod.POST, value = "/test") 
public ResponseEntity<SFRecord> execute(@RequestBody RequestDto json) 
     throws ClassNotFoundException, SQLException, FileNotFoundException { 
    Request request = json.convert(); 
    Main main = new Main(); 
    RequestObj reqObj = main.execute(request.getSentence()); 
    ResponseEntity<SFRecord> result = restTemplate.exchange(parserUrl, HttpMethod.POST, 
      new HttpEntity<RequestObj>(reqObj), SFRecord.class); 
    return result; 

} 

innerhalb Main ist diese Linie verwenden, um unmarshal data.xml

FileReader reader = new FileReader("Files/Data.xml"); 
    objects = (DataObjects) xstream.fromXML(reader); 

irgendwelche Ideen, warum das seltsame Verhalten?

Dank

aktualisieren

bemerkte ich, dass die XStreamAlias ​​Anmerkungen ignoriert werden, so dass ich hinzugefügt xstream.autodetectAnnotations (true); aber jetzt bekomme ich diese Ausnahme:

java.lang.ClassCastException: wrappers.DataObjects cannot be cast to wrappers.DataObjects 

ich diese Linie bin mit dem xml entpacken:

FileReader reader = new FileReader("Files/Data.xml");  
DataObjects objects = (DataObjects) xstream.fromXML(reader); 

Antwort

1

xstream.setClassLoader(DataObjects.class.getClassLoader()); 

es fest Hinzufügen.