Java 带有Spring Cloud和Kafka Streams的ClassCastException

Java 带有Spring Cloud和Kafka Streams的ClassCastException,java,spring,apache-kafka,spring-cloud-stream,Java,Spring,Apache Kafka,Spring Cloud Stream,我正在启动一个新的SB应用程序,它将作为Kafka的消费者,我开始使用Kafka Streams,但在启动该应用程序时出现以下异常 java.lang.ClassCastException:class com.sun.proxy.$Proxy101不能强制转换为class org.springframework.messaging.MessageChannel(com.sun.proxy.$Proxy101和org.springframework.messaging.MessageChannel

我正在启动一个新的SB应用程序,它将作为Kafka的消费者,我开始使用Kafka Streams,但在启动该应用程序时出现以下异常

java.lang.ClassCastException:class com.sun.proxy.$Proxy101不能强制转换为class org.springframework.messaging.MessageChannel(com.sun.proxy.$Proxy101和org.springframework.messaging.MessageChannel位于加载器“app”的未命名模块中) 在org.springframework.cloud.stream.binder.AbstractMessageChannelBinder.doBindConsumer(AbstractMessageChannelBinder.java:91)~[spring-cloud-stream-3.1.2.jar:3.1.2] 在org.springframework.cloud.stream.binder.AbstractBinder.bindConsumer(AbstractBinder.java:143)~[spring-cloud-stream-3.1.2.jar:3.1.2] 在org.springframework.cloud.stream.binding.BindingService.lambda$rescheduleConsumerBinding$1(BindingService.java:201)~[spring-cloud-stream-3.1.2.jar:3.1.2] 在org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)~[spring-context-5.3.5.jar:5.3.5] 在java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)~[na:na] 在java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)~[na:na] 在java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)~[na:na] 在java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)~[na:na] 在java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)~[na:na] 在java.base/java.lang.Thread.run(Thread.java:834)~[na:an]

这就是我如何声明KStream的方法,它计算一个单词的发送时间:

@Bean
  public Consumer<KStream<Bytes, String>> target() {
    return input -> input.flatMapValues(value -> Arrays.asList(value.toLowerCase().split("\\W+")))
        .map((key, value) -> new KeyValue<>(value, value))
        .groupByKey(Grouped.with(Serdes.String(), Serdes.String()))
        .windowedBy(TimeWindows.of(Duration.ofMillis(30000))).count(Materialized.as("words-count"))
        .toStream().map((key, value) -> new KeyValue<>(null, new WordCount(key.key(), value,
            new Date(key.window().start()), new Date(key.window().end()))));
  }
@Bean
公众消费者目标(){
返回输入->输入.flatMapValues(值->数组.asList(值.toLowerCase().split(\\W+)))
.map((键,值)->新键值(值,值))
.groupByKey(分组为.with(Serdes.String(),Serdes.String()))
.windowedBy(TimeWindows.of(Duration.of millis(30000)).count(具体化的.as(“字数”))
.toStream().map((键,值)->新的KeyValue(null,新的字数(key.key(),值,
新日期(key.window().start()),新日期(key.window().end());
}
使用相同的application.yml并具有仅用于接收此类消息的使用者功能

@Bean
  public Consumer<Message<String>> target() {
    return message -> {
      System.out.println("******************");
      System.out.println("Received message from source: " + message.getPayload());
    };
  }
@Bean
公众消费者目标(){
返回消息->{
System.out.println(“*******************”);
System.out.println(“从源接收的消息:+message.getPayload());
};
}
一切正常

我正在使用以下版本:

  • SpringBoot v2.4.4
  • SpringCloud v.2020.0.2
  • JavaV11.0.10
在单元测试期间,我看到过其他有此错误的帖子,但我甚至还没有进行过任何Junit测试


任何帮助都将不胜感激

看起来类路径中没有Kafka Streams活页夹,而是消息通道活页夹。确保类路径上有依赖项
spring云流绑定器kakfa-streams