当前位置: 首页 > 知识库问答 >
问题:

JMeter/Beanshell"调用bsh方法时出错:ava源文件:"

林辰钊
2023-03-14

我有一个问题在JMeter其中我收到这个错误

2014/08/14 14:13:26 ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval   Sourced file: inline evaluation of: ``String RequestUrl = vars.get("RequestUrl"); String[] params = RequestUrl.split(" . . . '' : Typed variable declaration 
2014/08/14 14:13:26 WARN  - jmeter.extractor.BeanShellPostProcessor: Problem in BeanShell script org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval   Sourced file: inline evaluation of: ``String RequestUrl = vars.get("RequestUrl"); String[] params = RequestUrl.split(" . . . '' : Typed variable declaration 

我不知道出了什么问题,而代码似乎正在运行。谁能给我一些建议吗?

下面是有问题的代码块:

String RequestUrl = vars.get("RequestUrl");
String[] params = RequestUrl.split("\\?");
String RequestTask = params[1].split("\\&")[1].split("=")[1];
System.out.println(RequestTask);
vars.put("RequestTask",RequestTask);

应该提到的是,代码位于后处理器中,后处理器与“RequestUrl”的Xpath提取器相匹配

编辑以包含整个错误

共有3个答案

施喜
2023-03-14

如果要将VuGen录制的JMS脚本转换为JMeter,则必须查找复制的lr函数,该函数将抛出此错误/类似错误。

例如:int orderlinecount=Integer。parseInt(lr.eval_字符串(“strInt”)

为了让jmeter成功执行脚本,您必须确保脚本中没有所有与lr相关的函数。

左丘阳晖
2023-03-14

你能告诉我整个错误吗?

试着在另一个语句之后添加一个语句,看看哪一个是根本原因。

我想你可能对结果(数组访问)做出假设,这可能是问题的原因。

滕胜涝
2023-03-14

我没有看到你的网址和XPath查询返回什么,但在任何情况下,你的网址解析逻辑看起来很脆弱,因为它强烈依赖于参数的顺序和存在,并且可能会在将来请求网址更改时咬你一口,即额外的参数或更改的参数顺序或者编码的东西,等等。

参考资料见下文:

import org.apache.http.NameValuePair;
import org.apache.http.client.utils.URLEncodedUtils;
import java.net.URI;
import java.util.List;

String url = vars.get("RequestUrl");

List params = URLEncodedUtils.parse(new URI(url), "UTF-8");

for (NameValuePair param : params) {            
    if (param.getName().equals("put your actual param name here")) {                 
        vars.put("RequestTask", param.getValue());
    }
}

此外,还值得查看如何使用BeanShell:JMeter最喜欢的内置组件,以获取故障排除提示。通常,应使用以下方法来本地化错误日志记录:

log.info("something");
log.error("something else");

所以,如果您在html" target="_blank">日志中没有看到消息,那么Beanshell将无法执行该行,并在上面的某个地方失败。

此外,Beanshell错误消息的信息量不大,我在脚本中使用以下结构:

try {
    //script logic here
}

catch (Throwable ex) {
    log.error("Failed to do this or that", ex);
}

所以可以在jmeter中读取错误stracktrace。日志文件。

希望这能有所帮助。

 类似资料:
  • 下面是我的代码,它在第10行第25列抛出异常,错误是: 调用bsh方法时出错:文件中的eval:内联求值:``import java.util.List;导入java.util.ArrayList;public static void main(Strin....“)在第10行第25列遇到”var“。

  • 而例外是: 2017/04/26 16:16:25 warn-jmeter.extractor.beanshellPostProcessor:BeanShell脚本org.apache.jorphan.util.jmeterException:调用bsh方法时出错:eval源文件:内联求值:``尝试{hash1=vars.get(“var_hash_1”);hash2=vars.get(“var_

  • 我是jmeter的新手,我遇到了以下错误: 杰米。util。BeanShellInterpreter:调用bsh方法时出错:eval无法初始化类stpl。自由党。茶。TEALib 我已经在jmeter的lib/ext中添加了java类的jar文件。我正在尝试在beanshell预处理器中导入java类。包名为且类名为TEALib,因此使用以下语法: 此外,我还在java类中添加了一个dll文件,该

  • 在杰米特 为什么为什么为什么!!!!! Java8默认安装。 为什么不呢?

  • 我需要将变量(从响应中提取)从一个线程传递到另一个响应:“16540$Add373”我需要$RegEx:Ref Name:SFID RegEx:[$]模板:$1$MatchNo:1之前的数字 我已经使用beanshell断言将变量设置为jmeter属性 ${u setProperty(SFID1,${SFID})}; 在执行任务时,我得到了 断言失败消息:org。阿帕奇。乔芬。util。JMete