2016-04-25 62 views
0

我使用XStream解組Data.xml文件。 當我用main()函數運行它時,它完美地工作,但是當我嘗試通過啓動應用程序運行它時,它會給我帶來UnknownFieldException。僅在春季啓動應用程序中發生UnknownFieldException

產生的原因:com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter $ UnknownFieldException:沒有這樣的領域workshop.tokenizer.data.Attributes.attribute ----調試信息---- 消息:沒有此字段workshop.tokenizer.data.Attributes.attribute 字段:屬性 類:workshop.tokenizer.data.Attributes required-type:workshop.tokenizer.data.Attributes converter-type:com.thoughtworks.xstream.converters。 reflection.ReflectionConverter class [1]:workshop.tokenizer.data.DataObj class [2]:java.util.ArrayList 轉換器型[1]:com.thoughtworks.xstream.converters.collections.CollectionConverter 類[3]:workshop.tokenizer.wrappers.DataObjects 版本:1.4.9

當我在調用此方法,創建主要對象會失敗,此異常,但如果我叫從同線「公共靜態無效的主要...」它完美

@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; 

} 

裏面主要是使用此行來解組data.xml中

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

有什麼想法爲什麼這種奇怪的行爲?

感謝

更新

我注意到XStreamAlias註釋被忽略了,所以我加了 xstream.autodetectAnnotations(真); 但現在我得到這個異常:

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

我用這條線來解組XML:

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

回答

1

添加

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

固定它。

相關問題