【问题标题】:Groovy: No signature of method: static java.lang.String.ValueOf() is applicable for argument types: (java.lang.String) values: [1572245927833]Groovy:没有方法签名:静态 java.lang.String.ValueOf() 适用于参数类型:(java.lang.String) 值:[1572245927833]
【发布时间】: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)重新加载后错误不再存在,谢谢!

标签: java groovy jsr223


【解决方案1】:

Java方法以小写valueOf开头:

return timestamp + String.valueOf(rand) + '^' + user_id;

【讨论】:

  • @AlexeiMartianov 错误不能保留ValueOf,也许你有更多代码使用ValueOf 而不是valueOf
  • 谢谢,在@ernest_k 缓存的备注之后,我重新启动并且错误消失了。
猜你喜欢
  • 2020-02-15
  • 1970-01-01
  • 2017-11-15
  • 2015-09-28
  • 2017-06-19
  • 1970-01-01
  • 2018-12-19
  • 2021-11-02
  • 1970-01-01
相关资源
最近更新 更多