线程“main”中的异常 java.lang.ClassCastException: class reactor.core.publisher.FluxPeekFuseable 无法转换为 class java.lang.String

问题描述

我正在学习 Spring Cloud Function。我们为什么要学习这个?运行代码时出现以下错误

Exception in thread "main" java.lang.classCastException: class reactor.core.publisher.FluxPeekFuseable cannot be cast to class java.lang.String (reactor.core.publisher.FluxPeekFuseable is in unnamed module of loader 'app'; java.lang.String is in module java.base of loader 'bootstrap')
    at com.course.kafkaproducer.SpringCloudFunctionApplication.main(SpringCloudFunctionApplication.java:22)

代码

@SpringBootApplication
public class SpringCloudFunctionApplication {

    public static void main(String[] args) {
        //SpringApplication.run(SpringCloudFunctionApplication.class,args);
        
        ApplicationContext context = SpringApplication.run(SpringCloudFunctionApplication.class);
        FunctionCatalog catalog = context.getBean(FunctionCatalog.class);
        Function<String,String> function = catalog.lookup("lowercase");
        System.out.println(function.apply("hello"));
    }
    
    @Bean
    public Function<String,String> uppercase() {
        return value -> value.toupperCase();
    }
    
    @Bean
    public Function<Flux<String>,Flux<String>> lowercase() {
        return flux -> flux.map(value -> value.toLowerCase());
    }
}

解决方法

我不确定您要在这里做什么,但是您正在调用反应式函数,但由于某种原因需要命令式输出,因此您的类强制转换异常确实是预期的行为。