如标题所述,从命令行启动ElasticSearch接收器连接器时,我得到NoClassDefFoundError: io/confluent/connect/storage/StorageSinkConnectorConfig

我通过将confluent-oss-5.0.0-2.11.zip文件解压缩到C:\中来安装Confluent软件包。
当我执行以下命令(或相对路径的任意组合)时,Zookeeper,Kafka代理和ElasticSearch已启动并正在运行:

> C:\confluent-5.0.0\bin\windows\connect-standalone.bat C:\confluent-5.0.0\etc\kafka\connect-standalone.properties C:\confluent-5.0.0\etc\kafka-connect-elasticsearch\quickstart-elasticsearch.properties

这是我的connect-standalone.properties文件:
bootstrap.servers=localhost:9092
key.converter=org.apache.kafka.connect.json.JsonConverter
value.converter=org.apache.kafka.connect.json.JsonConverter
key.converter.schemas.enable=true
value.converter.schemas.enable=true
offset.storage.file.filename=/tmp/connect.offsets
offset.flush.interval.ms=10000
plugin.path=/confluent-5.0.0/share/java/

还有我的quickstart-elasticsearch.properties文件:
name=elasticsearch-sink
connector.class=io.confluent.connect.elasticsearch.ElasticsearchSinkConnector
tasks.max=1
topics=test2
key.ignore=true
connection.url=http://localhost:9200
type.name=kafka-connect

我寻找了类似的问题,但他们似乎对plugin.path属性的相对/绝对路径有问题,我认为它已正确设置,因为如果更改它,我会得到关于找不到ElasticSearchSink类的错误。

我知道Confluent并不完全支持Windows,但是有人知道该问题的解决方案吗?谢谢!

最佳答案

回答我自己的问题:

显然,Kafka Connect尝试启动所有插件,并且在缺少依赖项时失败。因此,如果您不需要默认安​​装的插件(HDFS,S3 ...),则可以从confluent-5.0.0/share/java/文件夹中删除这些文件夹。

我仍然收到NoClassDefFoundError异常,但是它们与ElasticSearch连接器无关,因此我将其忽略,当所有这些错误消息打印完毕时,我可以看到ES连接器已启动,并且可以看到索引中的数据。

关于plugin.path,我将UNIX的完整路径设置为/confluent-5.0.0/share/java/,其根(/)为C:,然后从connect-standalone.bat文件夹中启动/confluent-5.0.0/bin/windows

10-01 17:14