JMeter 5.2.1执行Azure Event Hubs代码时com.azure.messaging.eventhubs.EventDataBatch加载失败问题排查求助
嘿,我帮你分析下这个报错的根源:你看到的java.lang.NoClassDefFoundError,本质是qpid-proton-j的版本和azure-messaging-eventhubs不兼容,导致找不到org.apache.qpid.proton.amqp.messaging.Section类。
问题拆解
你当前使用的azure-messaging-eventhubs-5.5.0.jar依赖的azure-core-amqp-2.0.2.jar,而azure-core-amqp 2.x系列要求的proton-j版本是0.33.0及以上,但你现在用的是proton-j-0.31.0.jar——这个旧版本里没有需要的Section类,或者类结构已经和新版本的Azure SDK不匹配了。
另外,我注意到你的依赖列表里有几个条目漏了.jar后缀(比如reactor-core-3.3.12.RELEASE),请确保这些文件实际是完整的jar包,否则JMeter无法加载它们。
还有,你里面包含了一堆测试用的依赖(junit-jupiter系列、mockito-core、azure-core-test),这些在JMeter运行生产脚本时完全不需要,反而可能引发依赖冲突,建议直接删掉。
修复步骤
- 升级proton-j版本:把现有的
proton-j-0.31.0.jar替换为proton-j-0.33.0.jar(这个版本和你用的Azure SDK版本完美兼容)。 - 清理冗余依赖:删除所有测试相关的jar包,减少冲突风险。
- 检查文件完整性:确保所有保留的依赖都是带
.jar后缀的完整文件。
推荐的精简依赖列表
为了避免不必要的冲突,建议只保留以下核心依赖(适配azure-messaging-eventhubs 5.5.0):
- amqp-client-5.7.1.jar
- azure-core-1.13.0.jar
- azure-core-amqp-2.0.2.jar
- azure-eventhubs-3.2.2.jar
- azure-messaging-eventhubs-5.5.0.jar
- jackson-annotations-2.9.0.jar
- jackson-core-2.9.9.jar
- jackson-databind-2.9.9.jar
- jackson-datatype-jsr310-2.9.9.jar
- proton-j-0.33.0.jar
- qpid-proton-j-extensions-1.2.1.jar
- reactive-streams-1.0.3.jar
- reactor-core-3.3.12.RELEASE.jar
- slf4j-api-1.7.28.jar
- stax2-api-3.1.4.jar
- woodstox-core-5.1.0.jar
验证操作
替换完依赖后,一定要重启JMeter,然后再运行你的脚本。如果还是有问题,检查JMeter的lib文件夹里有没有重复版本的依赖(比如同时存在新旧两个proton-j jar),确保只保留一套兼容的依赖。
内容的提问来源于stack exchange,提问作者Kumar

