我正在使用apache camel 2.12.0(也试过2.14.0)。 我有一个从远程服务器接收xml的路由:
<?xml version='1.0' encoding='UTF-8'?>
<response><meta><code>200</code></meta><data><person><name>John</name></person></data></response>
from("direct:start")
.to("jetty:http://localhost/something")
.transform().xpath("/response/data")
.log("${body.class}")
.unmarshal().xstream();
我剪掉了解散它的身体。使用xstream。
.log("${body.class}") -> net.sf.saxon.dom.DOMNodeList
直到现在一切正常。 mvn test,mvn camel:run ..一切都很好。
现在出现错误部分
mvn cobertura:cobertura
抛出异常
org.apache.camel.InvalidPayloadException: No body available of type: java.io.InputStream but has value: [net.sf.saxon.tree.tiny.TinyElementImpl@90400f] of type: java.util.ArrayList on: Message: [net.sf.saxon.tree.tiny.TinyElementImpl@90400f]
.log("${body.class}") -> java.util.ArrayList
帮助
你能否提出一个建议,为什么cobertura会改变xpath()的返回类型?
更新(已解决)
我发现了依赖项的问题。 如果我使用camel-xstream和cobertura,我会在.xpath()中得到奇怪的行为。 但是,如果我在依赖项中包含camel-xmljson lib,那么一切正常。 我想coberturas对jaxen的依赖之一:jaxen:jar:1.1-beta-8:compile或者其他一些加载与camel冲突的xml类。