【发布时间】:2019-10-28 07:17:14
【问题描述】:
我是 Groovy 的新手,现在在 JMeter 中将 JS 脚本重新编写为 Groovy。在 JMeter 的 JSR223 Groovy 中运行以下代码时,我遇到了持续错误 No signature of method: static java.lang.String.ValueOf() is applicable for argument types: (java.lang.String) values: [1572245927833],带有返回语句的行号错误:
def clientTransactionIdGen() {
String timestamp = new Date().getTime().toString();
def rand = get_random(1000000, 9999999);
def user_id = vars.get("user_id");
return timestamp + String.valueOf(rand) + '^' + user_id;
}
1572245927833 是以秒为单位的时间(因此是时间戳变量),并且没有符合 return 语句的 ValueOf() 转换。我什至将时间戳类型从def 更改为String,仍然错误点与return 语句一致。为什么在这样的地方出现这样的错误?据我了解,尝试将字符串对象转换为字符串。为什么?实际上,同样的错误是当我的时间戳很长并在返回行中转换时,这对我来说也是一个难题:
def clientTransactionIdGen() {
def timestamp = new Date().getTime();
def rand = get_random(1000000, 9999999);
def user_id = vars.get("user_id");
return String.valueOf(timestamp) + String.valueOf(rand) + '^' + user_id;
}
添加:根据良好的评论将所有脚本中的所有 ValueOf 更改为 valueOf,仍然存在上述错误并显示:No signature of method: static java.lang.String.ValueOf()
添加:在重新加载 JMeter 后解决,显然有些东西仍然被缓存并且不允许正确调试。
【问题讨论】:
-
它说您正在尝试将字符串解析为字符串,这是没有意义的。将 String.ValueOf(rand) 更改为简单的 rand
-
@michalk 如果这是问题所在,他会在时间戳解析时遇到错误。
-
String.ValueOf()->String.valueOf():区分大小写 -
@ernest_k,我已经在函数中将 ValueOf 更改为 valueOf - 仍然是同样的错误
-
@ernest_k,应用程序(JMeter)重新加载后错误不再存在,谢谢!