Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JMeter运行Java类(BeanShell)_Java_Jmeter_Beanshell - Fatal编程技术网

使用JMeter运行Java类(BeanShell)

使用JMeter运行Java类(BeanShell),java,jmeter,beanshell,Java,Jmeter,Beanshell,我编写了一个Java类用于JMeter,将项目打包为.jar文件,并将该文件移动到JMeter目录中的lib/ext文件夹中。我看过关于如何进行的文档,但它们给出了相互矛盾的答案 第一种方法是使用BeanShell采样器导入我的包和类,创建类的对象并以这种方式运行方法。我使用了这个方法,使用的示例类的文件结构比我想要运行的类的文件结构更简单。示例类使用以下BeanShell脚本 import tools.JmeterTools; JmeterTools jt = new JmeterTools(

我编写了一个Java类用于JMeter,将项目打包为.jar文件,并将该文件移动到JMeter目录中的lib/ext文件夹中。我看过关于如何进行的文档,但它们给出了相互矛盾的答案

第一种方法是使用BeanShell采样器导入我的包和类,创建类的对象并以这种方式运行方法。我使用了这个方法,使用的示例类的文件结构比我想要运行的类的文件结构更简单。示例类使用以下BeanShell脚本

import tools.JmeterTools;
JmeterTools jt = new JmeterTools();
jt.foo();
当我尝试对我想要运行的类使用此方法时,它指出变量声明是错误的,并且找不到该类。我认为这是因为我不知道要导入什么,因为我的项目中的文件结构有点奇怪

第二种方法使用BeanShell预处理器将jar添加到类路径中。这种方法我根本无法投入工作,但我读过许多关于其他人获得成功的报道。其工作原理如下:

addClassPath("directory path to jar\lib\ext\foo.jar");
JMeterTest jtm = new JMeterTest();
jmt.test();
有没有人知道哪种方法更有效,或者对如何修复导入有什么想法

我在BeanShell脚本中使用的导入如下所示:

import client.JMeterTest;
我班上排名靠前的包行如下

import com.x.foo.client;

您需要将jar文件放在
JMETER_HOME/lib
文件夹中

lib/ext
用于JMeter扩展/插件等


放置jar后,可能需要重新启动JMeter。

您需要将jar文件放在
JMeter_HOME/lib
文件夹中

lib/ext
用于JMeter扩展/插件等


放置jar后,可能必须重新启动JMeter。

如果满足以下前提条件,则从Beanshell运行外部类应该可以正常工作

  • 具有依赖项的测试位于中
  • 需要重新启动JMeter才能获取新库
  • 您需要为导入提供完整的包名和完整的类名(或通配符)

    或者

    import com.x.foo.client.JMeterTest;
    

  • 最后,建议使用“groovy”作为一种语言。Beanshell解释器存在严重的性能问题,因此可以将其用于一些非常“轻”的事情,如变量修改、将变量转换为属性等。要生成实际负载,请使用JSR223和groovy,因为它实现了可编译接口,因此可以获得与本机Java代码类似的性能。有关安装groovy脚本引擎支持的详细说明、基准测试和说明,请参阅指南


  • 如果满足以下前提条件,从Beanshell运行外部类应该可以很好地工作

  • 具有依赖项的测试位于中
  • 需要重新启动JMeter才能获取新库
  • 您需要为导入提供完整的包名和完整的类名(或通配符)

    或者

    import com.x.foo.client.JMeterTest;
    

  • 最后,建议使用“groovy”作为一种语言。Beanshell解释器存在严重的性能问题,因此可以将其用于一些非常“轻”的事情,如变量修改、将变量转换为属性等。要生成实际负载,请使用JSR223和groovy,因为它实现了可编译接口,因此可以获得与本机Java代码类似的性能。有关安装groovy脚本引擎支持的详细说明、基准测试和说明,请参阅指南


  • 对于将来有这个问题的人。其他人给出的答案是正确的。它对我不起作用,因为我忘记了在制作jar时Maven不会在测试目录中打包文件

    如果将来有人这样做,这个链接可能会有所帮助。
    适用于将来有此问题的任何人。其他人给出的答案是正确的。它对我不起作用,因为我忘记了在制作jar时Maven不会在测试目录中打包文件

    如果将来有人这样做,这个链接可能会有所帮助。

    当我将jar文件放在/lib文件夹中时,当我单击JMeter.bat批处理文件时,JMeter不再运行当我将jar文件放在/lib文件夹中时,JMeter不再运行当我单击JMeter.bat批处理文件时,我正在遵循这些步骤,我得到:“未找到命令:MyItem(java.lang.String,java.lang.String)”对于构造函数和“尝试解析方法:未定义变量上的getDescription()”,对于方法。我可以正确地导入模块并正确地声明变量,但我不能调用构造函数或方法。我按照这些步骤进行操作,得到构造函数的“未找到命令:MyItem(java.lang.String,java.lang.String)”和方法的“尝试解析方法:未定义变量上的getDescription()”。我可以正确导入模块并正确声明变量,但不能调用构造函数或方法。