Java com.thoughtworks.xstream.mapper.CannotResolveClassException

Java com.thoughtworks.xstream.mapper.CannotResolveClassException,java,mule,Java,Mule,我在从xml转换为对象时遇到此异常。 “持卡人(com.thoughtworks.xstream.mapper.CannotResolveClassException)” 我的课程如下: @XmlRootElement public class CardHolder { String transactionType; String cardNumber; //cons.. //getters and setters } 为了转换Jersey响应,您需要提取由M

我在从xml转换为对象时遇到此异常。 “持卡人(com.thoughtworks.xstream.mapper.CannotResolveClassException)” 我的课程如下:

@XmlRootElement
public class CardHolder {
    String transactionType;
    String cardNumber;

    //cons..
    //getters and setters
}

为了转换Jersey响应,您需要提取由MuleResponseWriter包装的实体

从文档: ContainerResponse cr=(ContainerResponse)
message.getInvocationProperty(“jersey_响应”); String messageString=(String)cr.getResponse().getEntity(); message.setPayload(messageString)

您可以在中创建自定义转换器,也可以创建类似于以下内容的简单脚本转换器,并将其放置在xml到对象转换器之前:

  <!-- Should be MuleResponseWriter -->
    <logger level="INFO" message="Payload after jersey resource: #[payload]" />
    <scripting:transformer>
        <scripting:script engine="groovy">
            <scripting:text><![CDATA[
        import com.sun.jersey.spi.container.ContainerResponse;

        ContainerResponse cr = (ContainerResponse)flowVars['jersey_response'];
        message.setPayload(cr.getResponse().getEntity()); 
        ]]></scripting:text>
        </scripting:script>
    </scripting:transformer>
<!-- What type? -->
<logger level="INFO" message="Payload after script: #[payload]" />


请发布完整的stacktrace,并且您尝试使用XStreamException堆栈解析的xml为:1。持卡人(com.thoughtworks.xstream.mapper.CannotResolveClassException)com.thoughtworks.xstream.mapper.DefaultMapper:56(null)2。持卡人(com.thoughtworks.xstream.mapper.CannotResolveClassException)。消息有效负载的类型为:String(org.mule.api.transformer.TransformerMessageException)org.mule.transformer.AbstractTransformer:139(),这与您的持卡人类完全不匹配。因此,它不能在两者之间转换也就不足为奇了。也许可以看看XStream教程:关于如何工作以及如何配置XStreamJersey响应的示例,请参见XML。但在泽西岛之后的骡子流中:资源将被包裹在骡子响应器中。你能在jersey resources标记后放置一个记录器吗?这应该会显示有效负载类型。它显示:INFO 2013-08-21 17:59:12756[[rest transformer_Test].connector.http.mule.default.receiver.02]org.mule.api.processor.LoggerMessageProcessor:来自jersey资源:org.mule.module.jersey.MuleResponseWriter$1@141a32fYep因此,您需要使用上述代码段或类似代码段将org.mule.module.jersey.MuleResponseWriter转换为您期望的xml,以便在其上运行xml对象转换器。嗨,Ryan Carter,我已将脚本放在xml.flow中,位于xml对象转换器上方。在那之后,我得到了“:开始标记之前只允许空白内容,而不是{(位置:start_文档见{…@1:1)(com.thoughtworks.xstream.io.StreamException)。消息负载类型为:String”。我是新手,请指导我。。