Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java XStream 1.4.4中的ConversionException/CannotResolveClassException_Java_Xml_Xstream - Fatal编程技术网

Java XStream 1.4.4中的ConversionException/CannotResolveClassException

Java XStream 1.4.4中的ConversionException/CannotResolveClassException,java,xml,xstream,Java,Xml,Xstream,我需要使用XStream 1.4.4将一堆XML读入Java域模型。我使用JAXB从XSD生成域类,用看似合适的@xsteemalias替换了一些注释(尽管到目前为止这似乎没有任何区别)。我还没有把JAXB的东西都剥离出来,因为我这里有很多类,到目前为止,它似乎走错了方向,太早了 在包含文本内容的第二个XML标记处引发错误。奇怪的是,不是第一次 这是我的错误: com.thoughtworks.xstream.converters.ConversionException: dateFrom :

我需要使用XStream 1.4.4将一堆XML读入Java域模型。我使用JAXB从XSD生成域类,用看似合适的@xsteemalias替换了一些注释(尽管到目前为止这似乎没有任何区别)。我还没有把JAXB的东西都剥离出来,因为我这里有很多类,到目前为止,它似乎走错了方向,太早了

在包含文本内容的第二个XML标记处引发错误。奇怪的是,不是第一次

这是我的错误:

com.thoughtworks.xstream.converters.ConversionException: dateFrom : dateFrom
---- Debugging information ----
message             : dateFrom
cause-exception     : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message       : dateFrom
class               : java.util.ArrayList
required-type       : java.util.ArrayList
converter-type      : com.thoughtworks.xstream.converters.collections.CollectionConverter
path                : /requestedCompany/companyItself/contactDetails/address/dateFrom
line number         : 7
class[1]            : nl.foo.domain.ContactDetails
converter-type[1]   : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
class[2]            : nl.foo.domain.YCompanyType
class[3]            : nl.foo.domain.RequestedCompany
version             : null
-------------------------------
at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:56)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:55)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:79)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:74)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:45)
at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29)
at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:70)
at com.thoughtworks.xstream.converters.collections.CollectionConverter.addCurrentElementToCollection(CollectionConverter.java:79)
at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:72)
at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:66)
at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:61)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:355)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:306)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:234)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:355)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:306)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:234)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:355)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:306)
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:234)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1058)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1042)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:913)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:904)
下面是我试图解析的XML的开头:

<?xml version="1.0" encoding="ISO-8859-1"?><requestedCompany xmlns="http://www.graydon.nl/XSellence/scorePlus" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<companyItself graydonCompanyIdentificationNumber="891974008">
<bla>bla</bla>
<contactDetails>
<companyName>WONINGTEXTIEL JAMO --VOORBEELDRAPPORT--</companyName>
<address status="huidig" type="20">
<dateFrom>1995-8-12</dateFrom>
<street>
<streetName>HAARLEMMERSTRAAT</streetName>
<houseNumber>179</houseNumber>
</street>

布拉
WONINGTEXTIEL JAMO——Voorbeeld关系--
1995-8-12
哈勒默斯特拉特
179
ContactDetails.java如下所示:

public class ContactDetails {

@XStreamAlias("companyName")
protected String companyName;
@XStreamAlias("tradeName")
protected List<TradeName> tradeName;
@XStreamAlias("address")
protected List<YAddress> address;
@XStreamAlias("telephoneNumber")
protected List<YTelephone> telephoneNumber;
@XStreamAlias("faxNumber")
protected List<YTelephone> faxNumber;
}
公共类联系人详细信息{
@XStreamAlias(“公司名称”)
受保护的字符串companyName;
@XStreamAlias(“商标名”)
受保护名单商标名;
@XStreamAlias(“地址”)
受保护名单地址;
@XStreamAlias(“电话号码”)
受保护名单电话号码;
@XStreamAlias(“传真号码”)
受保护名单号码;
}
我不确定我是否需要所有这些别名。他们似乎既没有帮助也没有伤害

当我移除dateFrom标记时,它在街上失败了。当我删除它时,它会在下一个标记上失败,等等。有趣的是,它不会在companyName或我自己添加的不受支持的“bla”标记上失败


编辑:问题似乎出在列表上。它总是列表中对象中失败的第一个元素。地址在列表中,因此地址中的所有字段都会导致错误。

为后代回答我自己的问题:确实是列表。在每个列表之前,我需要放置
@XStreamImplicit(itemFieldName=“address”)

这使得它能够正确地处理列表