JMeter-删除httpclient的高版本jar包后,执行脚本报错…NoSuchMethodError: org.apache.http.impl.client.HttpCliet…

在检查JMeter.log时发现jar包冲突,删除了高版本httpclient-4.5.7.jar后,启动JMeter时遇到脚本执行失败,错误信息提示NoSuchMethodError。为解决问题,恢复了高版本jar并移除低版本,避免了类似时间的再次发生,提醒在处理jar包版本时需谨慎。

一、问题描述

查看jmter.log时发现,有jar包冲突,于是将高版本(httpclient-4.5.7.jar)删除:
在这里插入图片描述
在这里插入图片描述

删除后,启动JMeter执行脚本,控制台直接报错,脚本没有执行,报错信息为:java.lang.NoSuchMethodError: org.apache.http.impl.client.HttpClientBuilder.setDnsResolver(Lorg/apache/http/conn/DnsResolver;)Lorg/apache/http/impl/client/HttpClientBuilder
如图:
在这里插入图片描述

二、处理办法

既然低版本的不行,就把高版本的恢复,删掉低版本就行。这两个版本的jar的区别,暂未去探究。
但这也提醒了我,以后在删除不同版本的jar包时应特别注意。
(因为在调试WebDriver Sampler,刚开始没有马上发现异常,是过了几天才发现的,然后一步步复推之前操作过的东西,才发现是删除高版本的httpclient这个jar导致的,也费了点时间,难受……)

你遇到的错误: ``` Uncaught Exception java.lang.NoSuchMethodError: org.apache.jmeter.samplers.SampleSaveConfiguration.setFormatter(Ljava/text/DateFormat;)V in thread Thread[StandardJMeterEngine,6,main] ``` 是一个典型的 **JMeter 版本与插件不兼容** 的问题。 --- ## 🔍 错误原因分析 ### ❌ 方法不存在:`setFormatter(DateFormat)` - 这个方法 `SampleSaveConfiguration.setFormatter()` 在 **JMeter 5.0 及以上版本中已被移除** - 它存在于 JMeter 3.x 和 4.x 中,但在升级到 5.0+ 后被重构或废弃 - 你的测试计划(`.jmx` 文件)或某个插件(尤其是旧版插件)仍然试图调用这个已删除的方法 > 📌 根本原因:使用了**为老版本 JMeter 编写的插件或脚本**,运行在新版本 JMeter--- ## ✅ 解决方案 ### ✅ 方案一:确认 JMeter 和 Plugins 版本匹配(推荐) #### 步骤 1:检查当前 JMeter 版本 ```bash jmeter -v ``` 输出示例: ``` Running Apache JMeter 5.6.2 ``` #### 步骤 2:确保使用的插件是最新版 访问官方插件页面: 👉 [https://jmeter-plugins.org/](https://jmeter-plugins.org/) 安装/更新插件的正确方式: 1. 打开 JMeter → **Options** → **Plugins Manager** 2. 更新所有插件到最新版本 3. 卸载不再维护或标记为“Deprecated”的插件 > ⚠️ 特别注意:如果你手动复制 `.jar` 文件到 `lib/ext` 目录,请删除它们并改用 Plugins Manager 统一管理! #### 推荐操作: - 删除 `JMETER_HOME/lib/ext/` 下所有非官方的 `.jar`(如 `JMeterPlugins-*`, `perfmon-*` 等) - 使用 **Plugins Manager** 重新安装所需插件 --- ### ✅ 方案二:降级 JMeter 到兼容版本(临时方案) 如果你必须使用一个老插件(比如旧版 ServerAgent 插件),可以尝试使用 **JMeter 4.0 或 5.0 之前的版本** 例如: | JMeter 版本 | 是否支持 `setFormatter` | |-------------|--------------------------| | ≤ 4.0 | ✅ 支持 | | ≥ 5.0 | ❌ 不支持(已移除) | 👉 下载旧版 JMeter: 🔗 https://archive.apache.org/dist/jmeter/binaries/ 选择类似文件: ``` apache-jmeter-4.0.tgz ``` > ⚠️ 注意:不推荐长期使用旧版本,存在安全漏洞和功能限制 --- ### ✅ 方案三:修改 `.jmx` 测试计划文件(高级) 有时 `.jmx` 文件中硬编码引用了旧 API。你可以编辑 XML 文件,删除相关字段。 #### 操作步骤: 1. 用文本编辑器打开 `.jmx` 文件 2. 搜索关键词:`setFormatter` 3. 找到类似内容: ```xml <elementProp name="sample_variables" ... ... <stringProp name="setFormatter">...</stringProp> ``` 4. 删除整个 `<stringProp name="setFormatter">...</stringProp>` 节点 5. 保存并重新加载到 JMeter > 💡 提示:这类配置通常是自动生成的,说明你用了某个过时的模板或插件导出的功能 --- ### ✅ 方案四:更新 ServerAgent 插件(常见场景) 你很可能是因为使用了 **旧版 PerfMon 插件 + 新版 JMeter** 导致此问题。 #### 正确做法: 1. 访问:[https://jmeter-plugins.org/?search=PerfMon](https://jmeter-plugins.org/?search=PerfMon) 2. 确保安装的是: - `PerfMon Metrics Collector` - 对应版本支持 JMeter 5.x / 5.6+ 3. 使用 Plugins Manager 升级: ``` Options → Plugins Manager → Available Updates → Update All ``` 4. 确认 `ServerAgent-2.2.3` 是最新可用版本(目前仍是) --- ## ✅ 验证是否解决 重启 JMeter,并尝试运行测试计划。 如果成功,你应该看到: - 测试正常启动 - PerfMon Listener 能连接目标服务器并采集数据 - 日志中无 `NoSuchMethodError` 查看日志位置: ``` JMETER_HOME/bin/jmeter.log ``` --- ## 🛠️ 预防措施(最佳实践) | 建议 | 说明 | |------|------| | ✅ 使用 Plugins Manager 管理插件 | 避免手动复制 jar | | ✅ 定期更新插件 | 尤其是在升级 JMeter 后 | | ✅ 备份 `.jmx` 文件前清理无效配置 | 防止携带旧 API 引用 | | ✅ 不混用不同版本的 JMeter 和插件 | 特别是跨大版本升级时 | --- ##
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值