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

JMeter使用Beanshell预处理器存日期变量时vars.putObject报错

错误产生原因

你的代码一共有两处问题,直接触发报错的是第二点:

  1. 类型声明错误:String.split()方法返回值是字符串数组(String[]),你用单个String类型去接收返回值本身不符合语法规范,脚本运行到这行就会先触发类型不匹配问题。
  2. 未定义变量引用:你调用vars.putObject("final_sending_date",final_date);只是把值存入了JMeter的变量空间,并不会自动在当前Groovy脚本里生成名为final_sending_date的局部变量。下一行log.info(final_sending_date);直接引用这个不存在的局部变量,Groovy引擎找不到对应属性,就会抛出你看到的MissingPropertyException错误。

*额外说明:你要存储的final_date是普通字符串类型,用vars.put()即可,不需要调用putObject()方法。

修复方案

按照以下规则修改脚本即可:

  • 把接收split返回值的变量类型改为String[]数组类型
  • 给局部变量final_date补充类型声明,Groovy虽然支持动态类型,但显式声明可以避免很多隐式错误
  • 日志打印时不要引用不存在的final_sending_date变量,直接打印已定义的局部变量,或者从JMeter变量空间中读取对应值再打印
  • 存储字符串类型JMeter变量时替换为vars.put()方法

修复后的可运行代码如下:

String a = vars.get("some_date");
String[] b = a.split("T");
log.info("分割得到的年月日部分:" + b[0]);
String final_date = b[0];
vars.put("final_sending_date", final_date);
// 打印验证存储结果
log.info("最终存入的final_sending_date值为:" + vars.get("final_sending_date"));

运行后你就可以在JMeter变量中拿到值为2022-06-5的final_sending_date变量,供后续取样器调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 02:27:27