我使用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);
答案 0 :(得分:1)
添加
xstream.setClassLoader(DataObjects.class.getClassLoader());
修好了。