部署Camel-Salesforce-Source连接器时遇NoClassDefFoundError问题排查
问题
尝试部署camel-salesforce-source连接器,操作如下:
- 从Maven下载了
camel-salesforce-source-kafka-connector-4.4.2-package.tar.gz和camel-salesforce-kafka-connector-0.9.0-package.tar.gz并解压 - 将解压后的目录添加至connect-distributed的插件路径
- 连接器列表已正常显示所有Camel及Salesforce连接器
但启动连接器时出现以下错误:
javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: org/apache/camel/kafkaconnector/CamelSourceConnectorConfig
连接器配置:
{ "name": "SF-poll", "config": { "tasks.max": "1", "connector.class": "org.apache.camel.kafkaconnector.salesforce.CamelSalesforceSourceConnector", "camel.kamelet.salesforce-source.query": "SELECT Id, Name, Email, Phone FROM Contact", "camel.kamelet.salesforce-source.topicName": "sf-contact", "camel.kamelet.salesforce-source.loginUrl": "https://org--qa.sandbox.lightning.force.com/", "camel.kamelet.salesforce-source.clientId": "***", "camel.kamelet.salesforce-source.clientSecret": "***", "camel.kamelet.salesforce-source.userName": "***", "camel.kamelet.salesforce-source.password": "***" } }
connect-distributed.properties配置:
bootstrap.servers=localhost:9092,localhost:9093,localhost:9094 group.id=connect-cluster key.converter=org.apache.kafka.connect.json.JsonConverter value.converter=org.apache.kafka.connect.json.JsonConverter consumer.key.deserializer=org.apache.kafka.common.serialization.StringDeserializer consumer.value.deserializer=org.apache.kafka.common.serialization.StringDeserializer key.converter.schemas.enable=true value.converter.schemas.enable=true offset.storage.topic=connect-offsets offset.storage.replication.factor=1 config.storage.topic=connect-configs config.storage.replication.factor=1 status.storage.topic=connect-status status.storage.replication.factor=1 offset.flush.interval.ms=10000 plugin.path=/usr/share/java,/home/ubuntu/Downloads/kafka_2.12-3.5.2/libs,/home/ubuntu/Downloads/kafka_2.12-3.5.2/camel-salesforce-source-kafka-connector
请问哪里配置缺失?
原因与解决方法
这个错误核心是版本冲突导致的:你同时引入了两个跨大版本的Camel Kafka Connector包(4.4.2和0.9.0),两者依赖结构差异极大,CamelSourceConnectorConfig类是4.x版本新增的,但旧版本(0.9.0)不存在,插件路径下的包冲突让Connect加载不到正确的类。
具体解决步骤:
- 清理冲突包:删除0.9.0版本的连接器包,保留4.4.2版本的
camel-salesforce-source-kafka-connector——它是更稳定的新版本,完全包含所需的CamelSourceConnectorConfig类。 - 修正插件路径:确保
plugin.path中只包含4.4.2版本的解压目录,不要同时保留两个版本的路径。 - 重启Connect服务:修改配置后必须重启connect-distributed,让新的插件路径生效。
- 调整登录地址:当前配置的
loginUrl是Lightning界面地址,Salesforce API登录需要用沙箱API地址,正确格式应为https://test.salesforce.com,或自定义域名沙箱的https://org--qa.my.salesforce.com,否则后续会出现登录失败问题。
内容的提问来源于stack exchange,提问作者Anup
相关产品推荐
相关产品推荐

