Error invoking bsh method: eval 源文件: inline evaluation of: ``

4
这是我试图在BeanShell采样器中执行的代码:
import java.lang.*;
import java.util.*;

String name_lead = vars.get("Name_lead");

String[] lead = name_lead.split("\\s+");
//vars.put("myname",lead[0]);
//vars.put("myname1",lead[1]);
//vars.put("myname2",lead[2]);
for(int i=1; i<=Integer.parseInt(vars.get("title_pass_matchNr")); i++)
{
    String title = vars.get("title_pass_"+i);
    String fname = vars.get("firstname_"+i);
    String lname = vars.get("lastname_"+i);
    String[] fn = fname.split("");
//vars.put("title",title);
//vars.put("fname",fn[1]);
//vars.put("lname",lname);

    if(lead[i-1].equals(title) && lead[i].equals(fn[1]) && lead[i+1].equals(lname))
    {
        vars.put("namep",lead[i]);
    }
}

但是我遇到了以下错误:

响应消息:org.apache.jorphan.util.JMeterException: 调用bsh方法出错:eval 源文件:内联评估:“import java.lang.; import java.util.; String name_lead=vars.get("Name_lead"); . . . ”

我无法理解它。有人可以帮帮我吗?我该如何解决这个问题?

name_lead类似于Mr P singh..并且使用正则表达式提取器。


为什么你的代码没有封装在类/方法中? - Matthew Diana
我正在使用JMeter BeanShell Sampler进行此操作...我认为这不是必要的。 - user6324058
当我尝试调试时,if控制器中有一个错误。但是我无法理解。 - user6324058
你在问题中的最后一句话是什么意思? - YakovL
我从响应中使用正则表达式获取name_lead的值。该值类似于P Singh先生。 - user6324058
1个回答

18

有一种好的方法可以将这个 Error invoking bsh method 错误转换成更易读的堆栈跟踪:将您的代码放入一个 try块 中:

try {
    //your code here
}
catch (Throwable ex) {
    log.error("Error in Beanshell", ex);
    throw ex;
}

这样您就能够在 jmeter.log 文件中查看异常详情。

另一种方法是在您的Beanshell脚本的最开始添加 debug() 指令。这样,您将会得到大量的调试输出到 stdout 中。

请参阅 如何使用BeanShell: JMeter的最爱内置组件 指南,了解更多有关在JMeter测试和脚本开发以及故障排除中使用Beanshell的信息。


当然,“记录并抛出异常”通常不是一个好主意。这会导致代码质量下降。相反,你应该选择记录或者抛出异常。同时进行两者操作是多余的。 - djangofan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接