使用 org/apache/kafka/common/serialization/StringSerializer 时出现 NoClassDefFoundError

问题描述

我刚刚开始在一个将在 WebSphere 8.5 上运行的 Java 1.7 应用程序中使用 Kafka。该项目构建得很好。我将它部署到 WebSphere 并运行它并收到此错误

 Error 500: javax.servlet.servletexception: java.lang.NoClassDefFoundError: org/apache/kafka/common/serialization/StringSerializer

这是一个 Java Maven 项目,在我的 pom.xml 中有这个:

    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka-clients</artifactId>
        <version>2.8.0</version>
    </dependency>

我的代码作为一个基本的第一次测试非常简单:

    Properties properties = new Properties();
    properties.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONfig,"chdhadoopd05:6667");
    properties.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONfig,StringSerializer.class.getName());
    properties.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONfig,StringSerializer.class.getName());
    
    KafkaProducer<String,String> kafkaProducer = new KafkaProducer<String,String>(properties);
    
    ProducerRecord<String,String> record=new ProducerRecord<String,String>("my_test","Hi Kafka");
    
    kafkaProducer.send(record);
    kafkaProducer.flush();
    kafkaProducer.close();
    

我已经阅读了数十篇帖子和问题,每个帖子和问题都有所不同,到目前为止,我没有看到任何解决方案。我上面的代码看起来正确吗?我错过了什么吗?我需要对服务器做些什么吗?

解决方法

问题是在一页的文档深处发现的……Apache Kofka 2.x 删除了对 Java 7 的支持。我降级到 v. 1.x,错误消失了。