【问题标题】:Java XStream CannotResolveClassExceptionJava XStream CannotResolveClassException
【发布时间】:2012-05-24 15:08:06
【问题描述】:

我正在尝试使用 XStream 将 XML 文件解析为对象,但出现此异常:

线程“main”中的异常 com.thoughtworks.xstream.mapper.CannotResolveClassException:服务器 在 com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:56) 在 com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30) 在 com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:55) [...]

这是我的 XML:

  <servers>
    <server>
      <ip>10.196.113.27</ip> 
    </server>
    <server>
      <ip>10.196.113.31</ip> 
    </server>
  </servers>

这是我的代码:

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();
        }
    }

异常由此触发:

    ServerHandler serverHandler = new ServerHandler();
    serverHandler.readFromXML();

【问题讨论】:

    标签: java xml parsing xstream


    【解决方案1】:

    尝试添加一个类 Servers 来保存您的 ServerIP 实例并添加以下行:

    xstream.alias("servers", Servers.class);
    xstream.alias("server", ServerIP.class);
    

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

    【讨论】:

      【解决方案2】:
      @XStreamAlias("server")
      public class ServerIP {
          private String ip;
      
          public String getIp() {
              return ip;
          }
      
          public void setIp(String ip) {
              this.ip = ip;
          }
      }
      

      对不起,答案不完整,我在完成之前分心并发表了。同时@Teg 指出了这个方向。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        • 1970-01-01
        • 2013-08-19
        • 2012-04-05
        相关资源
        最近更新 更多