JMeter预处理器存储Long值到变量后,取样器调用失败求助
解决JMeter中BeanShell预处理器变量无法解析的问题
嗨Hari,你的问题出在BeanShell预处理器中变量存储的类型不匹配上,我来一步步帮你搞定:
问题根源
JMeter的vars对象(也就是JMeterVariables)的put()方法要求第二个参数必须是字符串类型,但你直接传入了long类型的变量c,这会导致变量没有被正确存入JMeter的变量空间,所以后续BeanShell取样器里的${c}无法解析,直接输出了占位符文本。
解决方案
1. 修改BeanShell预处理器代码
把预处理器里的vars.put("c",c);改成以下两种方式之一,将long类型转为字符串后再存储:
// 方式1:用String.valueOf()转换 long c = 25478995L; log.info(c + " - It is long"); vars.put("c", String.valueOf(c));
或者:
// 方式2:用字符串拼接自动转换 long c = 25478995L; log.info(c + " - It is long"); vars.put("c", "" + c);
2. 验证变量是否正确存储(可选)
可以在预处理器里加一行日志输出,确认变量已经成功存入:
log.info("已存入变量c的值:" + vars.get("c"));
你可以在JMeter的日志窗口(Options -> Log Viewer)里看到这条日志,确认值是否正确。
3. 在BeanShell取样器中正确获取变量
除了用${c},在BeanShell脚本里更推荐直接使用vars.get("c")来获取变量,这样更可靠,比如:
// 方式1:用日志输出 log.info("变量c的值是:" + vars.get("c")); // 方式2:直接打印到结果树 return vars.get("c");
这样在查看结果树里就能正确显示25478995了。
内容的提问来源于stack exchange,提问作者Hari
相关产品推荐
相关产品推荐

