仅在Spring启动应用程序中的UnknownFieldException

时间:2016-04-25 19:50:58

标签: spring-boot xstream

我使用XStream来解组Data.xml文件。 当我使用main()函数运行它时它运行得很好,但是当我尝试通过我的启动应用程序运行它时,它会给我UnknownFieldException。

  

引起:com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter $ UnknownFieldException:没有这样的字段workshop.tokenizer.data.Attributes.attribute   ----调试信息----   消息:没有这样的字段workshop.tokenizer.data.Attributes.attribute   field:属性   class: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   converter-type [1]:com.thoughtworks.xstream.converters.collections.CollectionConverter   class [3]:workshop.tokenizer.wrappers.DataObjects   版本:1.4.9

当我调用此方法时,创建Main对象失败并出现此异常,但如果我从“public static void main ...”调用相同的行,则它可以正常工作

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

}

main内部使用此行解组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 个答案:

答案 0 :(得分:1)

添加

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

修好了。