我在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);


它给我带来的错误是--Error调用bsh方法:eval源文件:内联评估:import test.Urlmap; Urlmap u =new Urlmap(); log.info("xxxxxxxxxxxx :----"+u.di . . . '' : Cannot access field: turl, on object: test.Urlmap@16ec122a2017/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是否可以一次访问一个类值而不是嵌套的类值。

最佳答案

记住,Beanshell!= Java。而且,由于Beanshell解释器存在已知的性能问题,因此它不是最佳的脚本选项。

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

使用Groovy,您将可以按原样使用代码

java - 如何从Jmeter执行jar文件中的Java类-LMLPHP

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

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

10-05 19:49