【问题标题】:How to execute java class in jar file from Jmeter如何从Jmeter执行jar文件中的java类
【发布时间】:2018-01-03 22:28:43
【问题描述】:

我在 Jmeter 中比较新鲜,我创建了一个两个类

*package test;
public class Urlmap {
    static String turl=null;
    public String display(){
        String url="/xyz";
        Test2 t=new Test2(url);
        turl=t.x;
        return "/xyz";

    }
}
package test;
public class Test2 {
static String x=null;
Test2(String x){
    this.x=x;
}   
}*

我已经导入了 jar,然后尝试在 Jmeter 的 BeanShell Sampler 中执行该类

import test.Urlmap;
Urlmap u =new Urlmap();
log.info("xxxxxxxxxxxx :----"+u.display());
log.info("turl :----"+u.turl);

它给了我错误 --错误调用 bsh 方法:eval 源文件:内联评估:import test.Urlmap; Urlmap u =new Urlmap(); log.info("xxxxxxxxxxxx :----"+u.di . . . '' : Cannot access field: turl, on object: test.Urlmap@16ec122a 2017/07/28 06:44:56 WARN - jmeter.protocol.java.sampler.BeanShellSampler: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of:import test.Urlmap; Urlmap u =new Urlmap(); log.info("xxxxxxxxxxxx :----"+u.di . . . '' : 无法访问字段:turl,对象:test.Urlmap@16ec122a

但它在 Eclipse 中运行良好。 Jmeter 是否可以一次访问一个类值而不是嵌套类值。

【问题讨论】:

    标签: java jmeter beanshell


    【解决方案1】:

    记住,Beanshell != Java。此外,它不是最好的脚本选项,因为 Beanshell 解释器存在已知的性能问题。

    所以我强烈建议切换到JSR223 SamplerGroovy language,因为 Groovy 的 Java 兼容性要高得多,而且 Groovy 引擎由于能够将行为良好的脚本编译成字节码并缓存已编译的脚本以加快速度,因此性能要好得多连续处决。有关详细信息,请参阅Apache Groovy - Why and How You Should Use It

    使用 Groovy,您将能够“按原样”使用您的代码

    但是通过实例引用访问静态字段并不是 Java 的好习惯,所以我建议将您的代码修改为

    import test.Urlmap;
    Urlmap u =new Urlmap();
    log.info("xxxxxxxxxxxx :----"+u.display());
    log.info("turl :----"+Urlmap.turl); 
    

    【讨论】:

    • 谢谢你,我会用 JSR223 Sampler 进行一次性能测试..m
    【解决方案2】:

    问题是,您的turl 字段具有包保护的范围:它仅在包test 中可见,但在JMeter 的包中不可见。

    解决方案:将static 替换为public

    【讨论】:

      【解决方案3】:

      如果您希望 turl 保持静态,只需添加 public 以便 Jmeter 可以访问它

       public static String turl = null;
      

      静态字段也应该用类名调用,使用:

       Urlmap.turl
      

      【讨论】:

        猜你喜欢
        • 2016-11-05
        • 2018-05-10
        • 2023-04-09
        • 1970-01-01
        • 2012-02-28
        • 2011-06-23
        • 1970-01-01
        • 2015-05-30
        相关资源
        最近更新 更多