jmeter-beanshell中引用Java写的jar报错解决方案

一个 jmeter 小白,用 jmeter 跑自动化,在 beanshell 内嵌 java 代码的 jar

在 java 中用 main 方法能正常运行,但是打包成 jar 放到 beanshell 中一直报错,不通过,并且不能直观的看到是什么问题,怎么定位问题 ~~~

ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import com.jmeter.*; import org.json.*; import com.qxy.tester.execute.*; import  . . . '' : Method Invocation v2.excelModeIntegrationTest11
2020-12-14 17:56:38,919 WARN o.a.j.e.BeanShellPostProcessor: Problem in BeanShell script: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: ``import com.jmeter.*; import org.json.*; import com.qxy.tester.execute.*; import  . . . '' : Method Invocation v2.excelModeIntegrationTest11

一直提示该类的方法中间错误

1,一定要把 jar 引用用 jmeter 中,如下方法(怎么引用见其他用户写的 https://www.cnblogs.com/uncleyong/p/11475577.html)

方式一:把 jar 包加入到 classpath 

方式二:把 jar 包放到 lib/ext 下

方式三:把 jar 包放到自定义目录下

 2,每次加入新 jar ,或者替换 jar 时 一定要重启 jmeter,windows 直接把 jmeter 关掉重新打开,linux 用停止与启动命令

3,Java 中该方法中使用的 jar 要全部引用到 jmeter 中来,不用有 jar 包冲突(比如,java 中使用 net.sf.json,jmeter 中用 org.json)

4,import 一定要引用全,缺少会报错,找不到某某类,加上就好了

5,如果还是有异常怎么解决呢?缺少 Java 中该方法引用的 jar,但是不知缺少哪一个,(我 java 用的是 maven 引入很多包)

在 java 代码的关键节点上打上 log,用 jmeter 执行 看哪一行,看哪个日志没出现,如下:在 jmeter 中报错因为初始化不成功了

把报错的几行拿出来放到 jmeter 中的 beanshell 处理器中运行

JmeterExcelReadBeanUtils a= new JmeterExcelReadBeanUtils(); 

 a.exce(File file);

肯定会异常,在 jmeter 中查看异常,如果还是上面一样的错误 Method Invocation a.exce,在 JmeterExcelReadBeanUtils 调用的方法 exce 中重新加入日志定位到哪个节点不通,一步一步,就会知道缺少哪个 jar(越到底层,jmeter 错误中会明确说明找不到哪个 jar),加入缺少的 jar 重启服务重新执行 jmeter, 直到解决问题

 

 6,如果是简单的 java 用例 ,可以把 Java 下用到的所有 jar,全部一次性进入到 jmeter 中,再有问题再执行上面的步骤(前提是 java 中运行正常)

7,如果是第一次没有运行成功过,再出现异常 检查一个运行环境版本号之类的。

 jmeter 小白,有更简便方案定位问题的大神请指教 ~~~~~