2017-07-28 62 views
1
執行java類

我清新在JMeter中我創建了一個二級爲如何jar文件從的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; 
} 
}* 

我已經進口的罐子,然後試圖在JMeter中

的BeanShell的採樣執行類
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: [email protected] 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,在對象:[email protected]

但它在Eclipse工作正常是的JMeter可以在同一時間訪問一個類的值不是嵌套類值

回答

0

的問題是,你的turl領域具有保護包的範圍:只有在包test可見,但不能從JMeter的包

解決方案:用替換。

0

如果你想turl保持靜止,只需添加公共所以它可以通過的JMeter

public static String turl = null; 

Access還靜態字段應與類名來調用,使用:

Urlmap.turl 
1

記住, Beanshell!= Java。而且,由於Beanshell解釋器已知性能問題,因此它不是最好的腳本選項。

所以我強烈建議切換到JSR223 SamplerGroovy language作爲Groovy的Java的兼容性要高得多,Groovy的發動機具有更好的性能,因爲能夠編譯乖巧腳本成字節碼和緩存編譯腳本加快連續執行。有關更多詳細信息,請參閱Apache Groovy - Why and How You Should Use It

使用Groovy,你將能夠使用你的代碼「原樣」

JMeter Groovy Example

但是訪問通過實例引用靜態字段不是Java的很好的做法,所以我會建議修改你的代碼

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

謝謝我將與JSR223採樣器一起檢查性能測試..m – XillercoreX