XStream 别名与以前文件内容结构的兼容性

XStream Alias Compatibility With Previous Files Content Structure

我面临以下问题: 我有一个使用 XSTream 自动创建的文件,可以正确写入和读取。

我的问题是我想将 class (InstallationUser) 从一个包移动到另一个包,但这会在 XStream:

上创建解析异常

com.thoughtworks.xstream.converters.ConversionException: myproject.data.clientconfiguration.InstallationUser : myproject.data.clientconfiguration.InstallationUser ---- Debugging information ---- message : myproject.data.clientconfiguration.InstallationUser cause-exception
: com.thoughtworks.xstream.mapper.CannotResolveClassException cause-message : myproject.data.clientconfiguration.InstallationUser class
: java.util.TreeMap required-type : java.util.TreeMap converter-type : com.thoughtworks.xstream.converters.collections.TreeMapConverter path : /CLIENT_CONFIGURATION/network/NETWORK/users/entry/myproject.data.clientconfiguration.InstallationUser class[1] : myproject.data.clientconfiguration.InstallationDetails converter-type[1] : com.thoughtworks.xstream.converters.reflection.ReflectionConverter class[2] : java.util.Vector converter-type[2] : com.thoughtworks.xstream.converters.collections.CollectionConverter class[3] : myproject.data.clientconfiguration.ClientConfiguration version
: null

在那之后,我正在加载的数据丢失了。

我猜这是我的错,因为我之前没有为这个 class 创建别名。

我检查过,如果我没有将 class 从一个包裹移动到另一个包裹,它可以正常工作。

所以,我想知道是否有某种方法可以告知 XStream 解析器,之前的 class:

myproject.data.clientconfiguration.InstallationUser

现在可以:

myproject.data.clientconfiguration.newpackage.InstallationUser

提前感谢您的帮助

设置别名以匹配您的旧 class 名称,您可以将 class 移动到您想要的任何包。

XStream xstream = new XStream();
xstream.alias("myproject.data.clientconfiguration.InstallationUser", InstallationUser.class);