title: xstream CannotResolveClassException
body: <p>I'm trying to use xstream 1.4.2 to convert xml to object. It does work perfectly fine for me until I put the object's class file in a separate package than where the main code runs. Then I get a CannotResolveClassException. I've tried using the setClassLoader method as recommended by others but that doesn't help.</p>
  
  <pre><code>Exception in thread "main" com.thoughtworks.xstream.mapper.CannotResolveClassException: result
  at 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)
  at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
  at com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88)
  at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
  at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:79)
  at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
  at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
  at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
  at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
  at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
  at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
  at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:74)
  at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
  at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
  at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
  at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
  at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
  at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
  at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
  at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:45)
  at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29)
  at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:133)
  at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
  at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1052)
  at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1036)
  at com.thoughtworks.xstream.XStream.fromXML(XStream.java:912)
  at com.thoughtworks.xstream.XStream.fromXML(XStream.java:903)
  at main.readClass(main.java:48)
  at main.main(main.java:28)
  </code></pre>
  
  <p><strong>Answer:</strong> xstream expects the xml structure to be relative to the package in which it (the object) originates from. So xstream.alias must be used in order to alias the xml structure.</p>
  
  <pre><code>xstream.alias("something", Something.class);
  </code></pre>
  
  <p>Otherwise xstream will expect "Something" to be in the default package rather than the package it is a member of.</p>