JMeter - 使用 Beanshell 作为带文件的 JSR223 采样器时出现异常

JMeter - Exception when using Beanshell as JSR223 Sampler with file

我有一个包含简单 JSR223 代码的文件:

log.info("Hello JSR223")

当我在 JSR223 Sampler 中选择 Beanshell 作为语言时,出现以下异常:

2018-06-21 10:32:28,148 ERROR o.a.j.p.j.s.JSR223Sampler: Problem in JSR223 script JSR223 Sampler, message: javax.script.ScriptException: In file: eval stream Encountered "<EOF>" at line 2, column 24.
 in eval stream at line number 2
javax.script.ScriptException: In file: eval stream Encountered "<EOF>" at line 2, column 24.
 in eval stream at line number 2
    at bsh.engine.BshScriptEngine.evalSource(BshScriptEngine.java:82) ~[bsh-2.0b6.jar:2.0b6 2016-02-05 05:16:19]
    at bsh.engine.BshScriptEngine.eval(BshScriptEngine.java:52) ~[bsh-2.0b6.jar:2.0b6 2016-02-05 05:16:19]
    at javax.script.AbstractScriptEngine.eval(Unknown Source) ~[?:1.8.0_25]
    at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:199) ~[ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.protocol.java.sampler.JSR223Sampler.sample(JSR223Sampler.java:69) [ApacheJMeter_java.jar:4.0 r1823414]
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:490) [ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:416) [ApacheJMeter_core.jar:4.0 r1823414]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:250) [ApacheJMeter_core.jar:4.0 r1823414]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_25]

通过添加到脚本字段,无需文件即可使用相同的代码

如果您使用 Beanshell you need to stick to Java SE 5.0 语法来表示您的语句需要以分号结尾,请将其修改为:

log.info("Hello JSR223");
//                      ^ this is uber important

您的脚本应该会按预期开始工作。

请注意 starting from JMeter 3.1 it is recommended to use Groovy language for scripting mainly because Groovy has much better performance comparing to Beanshell 所以我建议将 "Language" 保留为 groovy,在这种情况下分号不是必需的。