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

标签 xstream kettle

我在 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/

相关文章:

java - XStream如何处理不同的 child ?

java - Xstream问题和java对象

json - Kettle 中的 RDB 到 JSON?

python - 如何在kettle中调用python脚本

java - 为什么我们在 Optaplanner 中使用 XStream 注释

java - 使用 XStream 序列化为 XML 但未获取所有字段

java - 使用 RESTlet,XStream 注释似乎没有效果

java - 找不到 ID 水壶

潘塔霍。将登录的错误消息放入字符串/字段

javascript - 使用javascript在pentaho中从 "yyyy-mm-dd"到 "dd/mm/yyyy"的日期格式转换