spring-cloud-stream
spring-cloud-stream copied to clipboard
[4.1.1] "java.lang.ClassCastException" when it is running on JUnit5
Here is my demo project https://github.com/SingKS8/kafka-stream-demo . I have updated spring boot 3.2.4 and Spring cloud 2023.0.1 aka spring cloud stream 4.1.1 in my demo project which is a demo about spring cloud function, stream binding and kafka streams binder.
If I am running it as a application starting, like ./mvnw spring-boot:run ; it is fine, there is no exception.
But if I am running the JUnit testcase I have got some class cast exceptions about "create producer binding" and "create consumer binding" like below.
2024-03-29T22:45:20.848+08:00 ERROR 78046 --- [kafka-stream-demo] [ scheduling-1] o.s.cloud.stream.binding.BindingService : Failed to create producer binding; retrying in 30 seconds
java.lang.ClassCastException: class jdk.proxy2.$Proxy84 cannot be cast to class org.springframework.messaging.MessageChannel (jdk.proxy2.$Proxy84 is in module jdk.proxy2 of loader 'app'; org.springframework.messaging.MessageChannel is in unnamed module of loader 'app')
at org.springframework.cloud.stream.binder.AbstractMessageChannelBinder.doBindProducer(AbstractMessageChannelBinder.java:103) ~[spring-cloud-stream-4.1.1.jar:4.1.1]
at org.springframework.cloud.stream.binder.AbstractBinder.bindProducer(AbstractBinder.java:153) ~[spring-cloud-stream-4.1.1.jar:4.1.1]
at org.springframework.cloud.stream.binding.BindingService.lambda$rescheduleProducerBinding$4(BindingService.java:376) ~[spring-cloud-stream-4.1.1.jar:4.1.1]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-6.1.4.jar:6.1.4]
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[na:na]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[na:na]
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:1583) ~[na:na]
2024-03-29T22:45:20.850+08:00 ERROR 78046 --- [kafka-stream-demo] [ scheduling-1] o.s.cloud.stream.binding.BindingService : Failed to create consumer binding; retrying in 30 seconds
java.lang.ClassCastException: class jdk.proxy2.$Proxy84 cannot be cast to class org.springframework.messaging.MessageChannel (jdk.proxy2.$Proxy84 is in module jdk.proxy2 of loader 'app'; org.springframework.messaging.MessageChannel is in unnamed module of loader 'app')
at org.springframework.cloud.stream.binder.AbstractMessageChannelBinder.doBindConsumer(AbstractMessageChannelBinder.java:103) ~[spring-cloud-stream-4.1.1.jar:4.1.1]
at org.springframework.cloud.stream.binder.AbstractBinder.bindConsumer(AbstractBinder.java:144) ~[spring-cloud-stream-4.1.1.jar:4.1.1]
at org.springframework.cloud.stream.binding.BindingService.lambda$rescheduleConsumerBinding$1(BindingService.java:211) ~[spring-cloud-stream-4.1.1.jar:4.1.1]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-6.1.4.jar:6.1.4]
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[na:na]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[na:na]
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:1583) ~[na:na]
I have downgraded the spring boot to 3.2.3 for testing, I still get those exceptions.