首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java XStream CannotResolveClassException

Java XStream CannotResolveClassException
EN

Stack Overflow用户
提问于 2012-05-24 15:08:06
回答 2查看 9.8K关注 0票数 0

我试图使用XStream将XML文件解析为对象,但我得到了这个异常:

线程“主”com.thoughtworks.xstream.mapper.CannotResolveClassException:服务器中的

异常在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) .

这里是我的XML:

代码语言:javascript
复制
  <servers>
    <server>
      <ip>10.196.113.27</ip> 
    </server>
    <server>
      <ip>10.196.113.31</ip> 
    </server>
  </servers>

这里是我的代码:

代码语言:javascript
复制
public class ServerIP {
    private String ip;

    public String getIp() {
        return ip;
    }

    public void setIp(String ip) {
        this.ip = ip;
    }
}

public class ServerHandler {

    private String fileName = "servers.xml";
    private String path = "J:\\workspace\\LOG730\\src\\Q3\\";
    private XStream xstream = new XStream(new DomDriver());

    public void readFromXML() {
        try {
            FileInputStream fis = new FileInputStream(path + fileName);
            ServerIP server = (ServerIP) xstream.fromXML(fis, new ServerIP());
            System.out.println("Host: " + server.getIp());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

异常由以下内容触发:

代码语言:javascript
复制
    ServerHandler serverHandler = new ServerHandler();
    serverHandler.readFromXML();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-24 15:13:17

尝试添加类服务器以保存ServerIP实例,并添加以下行:

代码语言:javascript
复制
xstream.alias("servers", Servers.class);
xstream.alias("server", ServerIP.class);

在这里,您可以找到一个关于别名的简单教程:http://x-stream.github.io/alias-tutorial.html

票数 6
EN

Stack Overflow用户

发布于 2012-05-24 15:12:55

代码语言:javascript
复制
@XStreamAlias("server")
public class ServerIP {
    private String ip;

    public String getIp() {
        return ip;
    }

    public void setIp(String ip) {
        this.ip = ip;
    }
}

很抱歉答案不完整,我在做完之前就心不在焉地发表了。与此同时,特格指着这个方向。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10740221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档