【发布时间】:2019-08-24 13:00:47
【问题描述】:
我是 Jmeter 的新手。我试图从一个 groovy 脚本中获取格林威治标准时间上午 12:00 的时间戳并将其转换为 Epoc 计时器
代码sn-p
use(groovy.time.TimeCategory) {
daytime = new Date()
daytime.set(hourOfDay: 0, minute: 0, second: 0)
time=daytime.getTime()
log.info(time)
}
当我在 groovy Editor 上在线运行此代码时,我得到了预期的响应 上述脚本的响应:1554249600472
当我在 Jmeter 中使用 JSR223 采样器运行相同的脚本时,得到以下错误响应
2019-04-03 10:54:06,597 错误 o.a.j.m.JSR223PreProcessor:JSR223 脚本中的问题,JSR223 PreProcessor javax.script.ScriptException:groovy.lang.MissingMethodException:没有方法签名:org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.use()适用于参数类型:(java.lang.Class,Script20$_run_closure1)值:[类 groovy.time.TimeCategory, Script20$_run_closure1@6aaee2b9] 可能的解决方案:use(java.lang.Class, groovy.lang.Closure), use(java.util.List, groovy.lang.Closure), use([Ljava.lang.Object;), grep(), any( ), 倾倒() 在 org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:324) ~[groovy-all-2.4.15.jar:2.4.15] 在 org.codehaus.groovy.jsr223.GroovyCompiledScript.eval(GroovyCompiledScript.java:72) ~[groovy-all-2.4.15.jar:2.4.15] 在 javax.script.CompiledScript.eval(Unknown Source) ~[?:1.8.0_201] 在 org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:221) ~[ApacheJMeter_core.jar:5.0 r1840935] 在 org.apache.jmeter.modifiers.JSR223PreProcessor.process(JSR223PreProcessor.java:44) [ApacheJMeter_components.jar:5.0 r1840935] 在 org.apache.jmeter.threads.JMeterThread.runPreProcessors(JMeterThread.java:935) [ApacheJMeter_core.jar:5.0 r1840935] 在 org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:537) [ApacheJMeter_core.jar:5.0 r1840935] 在 org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486) [ApacheJMeter_core.jar:5.0 r1840935] 在 org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253) [ApacheJMeter_core.jar:5.0 r1840935] 在 java.lang.Thread.run(Unknown Source) [?:1.8.0_201] 引起:groovy.lang.MissingMethodException:没有方法签名:org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.use() 适用于参数类型:(java.lang.Class, Script20$_run_closure1) 值:[class groovy. time.TimeCategory, Script20$_run_closure1@6aaee2b9] 可能的解决方案:use(java.lang.Class, groovy.lang.Closure), use(java.util.List, groovy.lang.Closure), use([Ljava.lang.Object;), grep(), any( ), 倾倒() 在 org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.callGlobal(GroovyScriptEngineImpl.java:403) ~[groovy-all-2.4.15.jar:2.4.15] 在 org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.access 100 美元(GroovyScriptEngineImpl.java:94)~[groovy-all-2.4.15.jar:2.4.15] 在 org.codehaus.groovy.jsr223.GroovyScriptEngineImpl$3.invokeMethod(GroovyScriptEngineImpl.java:307) ~[groovy-all-2.4.15.jar:2.4.15] 在 org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:68) ~[groovy-all-2.4.15.jar:2.4.15] 在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) ~[groovy-all-2.4.15.jar:2.4.15] 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:157) ~[groovy-all-2.4.15.jar:2.4.15] 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:177) ~[groovy-all-2.4.15.jar:2.4.15] 在 Script20.run(Script20.groovy:1) ~[?:?] 在 org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:321) ~[groovy-all-2.4.15.jar:2.4.15]
... 9 更多
【问题讨论】:
-
你根本不需要 use(...){...} 。只需保留您在 {} 中的所有内容
-
嗨@daggett谢谢你我尝试了下面的代码,但我仍然观察到响应{ use groovy.time.TimeCategory daytime = new Date() daytime.set(hourOfDay: 0, minute: 0, second: 0) time=daytime.getTime() log.info(time) } 错误观察如下
-
2019-04-04 10:13:20,562 错误 oajmJSR223PreProcessor:JSR223 脚本中的问题,JSR223 PreProcessor javax.script.ScriptException:org.codehaus.groovy.control.MultipleCompilationErrorsException:启动失败:Script29。 groovy: 1: 歧义表达式可以是无参数的闭包表达式,也可以是孤立的开放代码块;解决方案:添加一个显式的闭包参数列表,例如{it -> ...},或者通过给它一个标签来强制它被视为一个开放块,例如L:{...} @ 第 1 行第 1 列。{ ^ 1 错误
标签: groovy jmeter jmeter-5.0