面对骆驼分离器的投射错误

时间:2017-01-12 06:29:38

标签: java apache-camel

我是骆驼的新手,我为分离器编写了代码。 我编写了一个context.xml,其中包含用于映射POJO的路由和bean,以及一个包含以下代码的FileSplitter.java文件:

public class FileSplitter {
    public List<Object> split(Exchange exchange) throws IOException {
        List<Object> outputList;
        outputList = (List<Object>) exchange.getIn().getBody(File.class);
        return outputList;
    } 
}

我收到的错误是这样的。 这是控制台输出:

    java.lang.ClassCastException: java.io.File cannot be cast to java.util.List
        at mainJava.FileSplitter.split(FileSplitter.java:15)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

错误似乎出现在这一行:

outputList = (List<Object>) exchange.getIn().getBody(File.class);

1 个答案:

答案 0 :(得分:2)

来电getBody(File.class)将返回java.io.File个实例,您无法将其转换为List,但它始终为java.io.File类型。

就像用Java编写

File file = new File("foo.txt");
List list = (List) file;

您无法做到,并且您也会遇到类型转换异常。