经过几周的时间在这里寻找一些信息和谷歌,我已经决定在这里发帖,看看是否有任何有同样问题的人可以帮助我。
我有一个在Eclipse Ganymede中开发的java应用程序,使用tomcat连接我的本地数据库。问题是我想向公共服务器上发布的Kafka主题发送一条简单的消息(" Hello World")。我已经导入了库并开发了Kafka函数,但是当我在调试模式下运行时会发生一些事情。编译时没有问题或可见错误,但是当我运行应用程序并按下按钮来提升此功能时,它会在KafkaProducer函数中停止,因为有NoClassDefFoundError kafka.producer .....似乎它没有找到库正确,但我已经看到它正在构建路径中正确导入。
我不确定问题是否与Kafka以及与Eclipse或Java SDK(3.6)的兼容性,它可能是?任何人都知道Kafka所需的最低Java版本吗?
另外,我发现Kafka确实使用了Scala,但我想知道我是否可以使用这个Eclipse IDE版本来改变它。
我找到的另一个解决方案是使用从Java应用程序调用的Python脚本,但我没有办法从那里调用它,因为我遵循了几个教程但是没有任何作用,但我必须继续这个,因为它似乎更容易的选择。我开发了.py脚本并与Kafka服务器一起工作,现在我必须找到从Java和Python交换变量的解决方案。如果有人知道任何好的教程,请告诉我。
在我的日子恢复之后和墙壁撞到我的头后,也许有人之前发现了这个错误并且可以帮助我找到解决方案,我真的很感激并且对于漫长的历史感到抱歉。
答案 0 :(得分:0)
请在要部署到Tomcat的Java应用程序的WAR文件中包含Kafka客户端库
答案 1 :(得分:0)
请使用org.apache.kafka.clients.producer.KafkaProducer而不是kafka.producer.Producer(这是旧的客户端API),并确保在类路径上有Kafka客户端库。客户端库完全使用Java。它是用scala编写的旧API,服务器端代码也是如此。如果使用新的客户端API,则不需要在代码中导入服务器库或将其添加到类路径中。
答案 2 :(得分:0)
最后,问题与未添加良好的库有关。我不得不在build.xml文件中添加它,在这里导入库。也许这对使用旧Eclipse版本的人有用。 所以现在它找到了库但我必须更新Java版本,其他问题。所以它解决了