首页 > 解决方案 > JMeter - 将 Beanshell 用作带有文件的 JSR223 采样器时出现异常

问题描述

我有一个带有简单 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]

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

标签: jmeterbeanshelljsr223

解决方案


如果您使用Beanshell,您需要坚持Java SE 5.0语法,以便您的语句需要以分号结尾,将其修改为:

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

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

请注意,从 JMeter 3.1 开始,建议使用 Groovy 语言编写脚本,主要是因为与 Beanshell 相比,Groovy 具有更好的性能,所以我建议将“Language”保留为groovy,在这种情况下不需要分号。


推荐阅读