【问题标题】:NoClassDefFoundError when using org/apache/kafka/common/serialization/StringSerializer使用 org/apache/kafka/common/serialization/StringSerializer 时出现 NoClassDefFoundError
【发布时间】:2021-05-26 18:23:04
【问题描述】:

我刚刚开始在一个 Java 1.7 应用程序中使用 Kafka,该应用程序将在 WebSphere 8.5 上运行。该项目构建得很好。我将它部署到 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();
    

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

【问题讨论】:

  • 检查你的 kafka-clients jar 是否在你正在构建的 war/ear 中。此外,afaik Kafka 不再支持 Java7,所以要么寻找支持它的旧库,要么在 WebSphere 中更新你的 Java,看看它是否有帮助。
  • 我没有 websphere 经验,但我认为您确实需要修改其类路径以添加依赖项。否则,默认情况下,maven 不会为您的 war/jar 执行此操作

标签: java apache-kafka websphere java-7


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-16
    • 2022-10-26
    • 2021-11-11
    • 2014-11-03
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多