【发布时间】: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