2016-02-09 153 views
1

我試圖將字符串轉換爲長整數,然後執行一些計算,然後再轉換回字符串。在BeanShell的後處理整個代碼是在這裏(depositamount和imagecount在JMeter的已知變量):在JMeter的beanshell處理器中將字符串轉換爲Long時出錯

Long ttl=Long.valueOf(vars.get("depositamount")); 
Long med=Long.valueOf(vars.get("depositamount")); 
Long intermediate=med/vars.get("imagecount"); 

String depamt=intermediate.toString(); 

vars.put("depositamount",depamt); 

Double tlnlast=ttl-depamt * (vars.get("imagecount")-1); 

vars.put("lastamt",tlnlast.toString()); 

vars.put("loopcounter","1"); 

然而,當我運行它,我得到一個錯誤:ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``Long ttl=Long.valueOf(vars.get("depositamount")); Long med=Long.valueOf(vars.get . . . '' : Typed variable declaration : Method Invocation Long.valueOf。我試圖用Long.parseLong代替valueOf,但是拋出了同樣的錯誤,「parseLong」代替了「valueOf」。 我無法弄清楚我做錯了什麼。謝謝!

+1

'Long intermediate = med/vars.get(「imagecount」);'不是說這是你的問題,而是你在這裏劃一個字符串? – RaGe

+1

更多字符串數學在這裏:'(vars.get(「imagecount」) - 1)' – RaGe

+0

謝謝你找到那些。在過去這個問題上會出現錯誤。我也必須考慮到這一點。 – user3476534

回答

1
  • 從性能的角度來看,最好使用Long.parseLong(String)方法
  • 仔細檢查您的med/vars.get("imagecount")vars.get("imagecount")-1方法作爲vars.get()回報String。如果您imagecount變量有不同的類型 - 使用vars.getObject()方法
  • How to debug your Apache JMeter script文章,而不是爲
  • ,如果添加 debug();指令到您的BeanShell腳本的開始 - 你就可以看到很多調試信息在標準輸出即應足以解決任何問題。
+1

'valueOf()'在下面使用'parseLong()'。沒有性能差異。請參閱:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Long.java#507 – RaGe