ClassCastException 由 (String) getIn().getBody

ClassCastException by (String) getIn().getBody

我的 RouteBuilder 中有这条骆驼路线:

    @Override
    public void configure() {
            ...
                .log(LoggingLevel.DEBUG, "AfterHttp IN: ${in.headers} - ${in.body}").choice().when(new Predicate() {
                    @Override
                    public boolean matches(Exchange exchange) {
                        String body = (String) exchange.getIn().getBody();
                        return body.contains("output wished");
                    }
                }).to("file://out/wished").end();
    }

我不明白为什么 ClassCastException 出现在 (String) exchange.getIn().getBody()

不幸的是,从日志中,我没有得到 class getBody() 对象的信息。是。

Execution of JMS message listener failed. Caused by: [org.apache.camel.RuntimeCamelException - java.lang.ClassCastException]
org.apache.camel.RuntimeCamelException: java.lang.ClassCastException

只转换成String肯定是错误的。它在文档中说明:

Object getBody()
Returns the body of the message as a POJO

万一我只是毫无逻辑地返回 true:

                    @Override
                    public boolean matches(Exchange exchange) {
                          return true;
                    }

,很好,路由按预期结束(将正文写入目录文件://out/wished)

有什么建议吗?

谢谢, 哈迪

使用

String body = exchange.getIn().getBody(String.class);