在使用xstream处理xml报文的时候,springboot形式启动服务端,使用main方法启动客户端测试,出现
java.lang.ClassCastException:com.sctech.xstream.pojo.receive.Root cannot be cast to com.sctech.xstream.pojo.receive.Root
检查发现Root属于同一个类,且包中只有一个类,但使用 instanceof 判断,发现其并不属于Root;通过查询资料发现 “两个类的相等性取决于类名和加载器”,而本次使用的类名相同,通过打印类加载器发现 类加载器不一致;
有效的解决办法是设置当前线程使用的相同类加载器:
XStream xStream = new XStream();
xStream.setClassLoader(Thread.currentThread().getContextClassLoader());
修改如下 :
发送如下:
接收如下:
至此,完毕!



