gpt4 book ai didi

xstream - 在 Kettle 下使用 xstream 时,nodecom.thoughtworks.xstream.mapper.CannotResolveClassException

转载 作者:行者123 更新时间:2023-12-02 16:52:00 32 4
gpt4 key购买 nike

我在 Kettle 下使用 XStream 将 XML 反序列化为 Java 对象,但它总是给我带来异常:nodecom.thoughtworks.xstream.mapper.CannotResolveClassException

然后我将我的代码与 Kettle 分开并作为一个简单的 Java 应用程序进行了尝试。而且效果很好。例如:

public static void main(String[] args) {
person p = new person("JJ", "MM");
XStream xstream = new XStream(new DomDriver());
xstream.alias("personname", person.class);
String xml = xstream.toXML(p);
person pp = (person) xstream.fromXML(xml);
System.out.println(pp.toString());
}


public class person {

private String firstname;
private String lastname;

public person(String first, String last) {
this.firstname = first;
this.lastname = last;
}

public String getFirstname() {
return this.firstname;
}

public String getLastname() {
return this.lastname;
}

public void setFirstname(String name) {
this.firstname = name;
}

public void setLastname(String name) {
this.lastname = name;
}

}

这段代码工作正常。但是,当我将此代码移动到 Kettle 插件中时,它在从 XML 文件读取元数据的步骤中失败。

最佳答案

我能够解决这个问题。我必须为用于反序列化 xml 字符串的 XStream 实例设置类加载器。

因此,在调用 xstream.fromXml(xml) 之前执行以下操作:

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

这将解决xstream.mapper.CannotResolveClassException异常。这实在是太奇怪了。希望这会有所帮助。

关于xstream - 在 Kettle 下使用 xstream 时,nodecom.thoughtworks.xstream.mapper.CannotResolveClassException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9508292/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com