Problemas com xStream

3 respostas
H

Olá pessoal.

Eu estou usando xStream para ler um xml e jogar nas minhas classes os dados.
Até aí beleza.
Criei as classes, e tal, e mandei o xstream ler o tal do xml.
Porém ele me retornou um erro enorme, no qual tem umas informações.
vejam:

Exception in thread "main" com.thoughtworks.xstream.converters.ConversionException: nome : nome : nome : nome
---- Debugging information ----
message             : nome : nome
cause-exception     : com.thoughtworks.xstream.mapper.CannotResolveClassException
cause-message       : nome : nome
class               : com.andrey.cab.Case
required-type       : java.util.ArrayList
path                : /case/entradas/entrada/nome
line number         : 62
-------------------------------
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:89)
        at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:63)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
        at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:246)
        at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:218)
        at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:162)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
        at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:63)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
        at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:246)
        at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:218)
        at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:162)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
        at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:63)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:76)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:60)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:137)
        at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:33)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:923)
        at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:909)
        at com.thoughtworks.xstream.XStream.fromXML(XStream.java:853)
        at com.thoughtworks.xstream.XStream.fromXML(XStream.java:845)
        at com.andrey.main.Main.main(Main.java:59)
Caused by: com.thoughtworks.xstream.mapper.CannotResolveClassException: nome : nome
        at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:68)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:71)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:86)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:96)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38)
        at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:52)
        at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29)
        at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:70)
        at com.thoughtworks.xstream.converters.collections.CollectionConverter.populateCollection(CollectionConverter.java:68)
        at com.thoughtworks.xstream.converters.collections.CollectionConverter.unmarshal(CollectionConverter.java:61)
        at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:82)
        ... 22 more
Java Result: 1

Isso acontece quando dou um xstream.fromXML(arquivo);
Pelo que eu notei, parece que em uma das classes, onde eu usei um array para armazenar as classes, ele deu pau :(

Se alguém tiver pelo menos uma base do que seria o erro, agradeço.
No resto eu me viro daí.

Valeu galera.

3 Respostas

H

up =/

V

Espero que eu não esteja ressuscitando tópicos aqui.
Mas já passei por esse problema.

Das duas uma, ou você alterou sua classe, aí fica impossível que o Xstream recupere o arquivo, ou você está com pau no método fromXML(InputStream input).

Se for o primeiro caso, você vai saber que alterou, se tiver alterado o nome de uma campo por exemplo, é pau na certa!

Se for o segundo, tente primeiro ler o arquivo XML e jogar em uma String, depois usa o fromXML novamente, mas dessa vez passando como parâmetro a String q vc leu do arquivo.

Tenho uma postagem falando sobre XStream, talvez te ajude: http://vantuiloliveira.blogspot.com/2011/07/xstream-salvando-arquivos-xml-com-java.html

T

Bem a razão do erro foi que o xstream não conseguiu localizar o atributo Nome, que “anteriormente” ele tinha.

Exemplo.

class Teste{

int a;
String b;

..

Faço o xstream da classe Teste.

<Teste>
 <a> </a>
 <b> </b>
&lt;/Teste&gt;

Agora se eu modificar Teste para

class Teste{
String b;
...

E tentar novamente fazer o xstream.
Vai dar o erro apresentado acima.

Criado 20 de março de 2011
Ultima resposta 20 de jul. de 2011
Respostas 3
Participantes 3