You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter JMS Publisher发布消息至ActiveMQ Artemis时遇报错求助

错误原因及解决方法

第一个错误:java.lang.NoSuchMethodError: javax.jms.Message.setJMSDeliveryTime(J)V

原因

你用的activemq-all-5.18.3.jar是ActiveMQ Classic的全量包,依赖JMS 2.0规范,但Java 11自带的javax.jms类是旧版本,缺少setJMSDeliveryTime方法。同时JMeter自身也带有JMS相关类,类加载优先级冲突,导致优先加载了Java自带的旧JMS类,而非activemq-all里的实现。另外你连接的是ActiveMQ Artemis,用ActiveMQ Classic的客户端本身就存在兼容性问题。

解决方法

  • 替换jar包:不要用activemq-all-5.18.3.jar,改用ActiveMQ Artemis专属的客户端jar包(比如artemis-jms-client.jar),选择和远程Artemis服务器版本兼容的版本,将其放入Dependencies文件夹。
  • 调整类加载优先级:编辑JMeter的jmeter.properties文件,设置classloader.user_priority=10,让用户自定义类路径下的jar包优先加载,避免和JMeter自带类冲突。
  • 修正JMS配置:连接Artemis时,初始上下文工厂要改为org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory,而非ActiveMQ Classic的工厂类。

第二个错误:java.lang.UnsupportedClassVersionError(类文件版本61.0 vs 55.0)

原因

activemq-all-6.1.0.jar是用Java 17编译的(类文件版本61对应Java 17),而你当前使用的Java 11最高只支持类文件版本55,版本不兼容导致无法加载类。

解决方法

二选一即可:

  • 升级Java版本:把Java 11换成Java 17及以上,适配activemq-all-6.1.0.jar的编译要求;
  • 降级客户端jar包:选择支持Java 11的ActiveMQ/Artemis客户端版本,比如ActiveMQ Classic 5.18.x系列(但仍建议用Artemis专属客户端),或者Artemis 2.30.x及以下版本(需确认官方兼容性说明)。

额外注意事项

  • 不要在Dependencies文件夹中同时存放多个版本的JMS客户端jar包,避免类冲突;
  • 确认config.properties中的user.classpath=./Dependencies配置路径正确,无拼写错误;
  • 运行JMeter前,清理JMeter的临时缓存(比如bin目录下的tmp文件夹),避免残留旧类文件影响加载。

内容的提问来源于stack exchange,提问作者JustNatural

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 12:51:00