JMeterで問題が発生し、このエラーが表示されます
2014/08/14 14:13:26 ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``String RequestUrl = vars.get("RequestUrl"); String[] params = RequestUrl.split(" . . . '' : Typed variable declaration
2014/08/14 14:13:26 WARN - jmeter.extractor.BeanShellPostProcessor: Problem in BeanShell script org.Apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: ``String RequestUrl = vars.get("RequestUrl"); String[] params = RequestUrl.split(" . . . '' : Typed variable declaration
私は何が悪いのか手がかりがなく、コードはそれ以外では機能しているようです。誰か私にアドバイスをくれますか?
問題のコードのブロックは次のとおりです。
String RequestUrl = vars.get("RequestUrl");
String[] params = RequestUrl.split("\\?");
String RequestTask = params[1].split("\\&")[1].split("=")[1];
System.out.println(RequestTask);
vars.put("RequestTask",RequestTask);
おそらく、コードはポストプロセッサーにあり、「RequestUrl」のXpathエクストラクターとペアになっていることを言及する必要があります
エラー全体を含むように編集されました
URLが表示されず、XPathクエリが何を返すかはわかりませんが、URLの解析ロジックはパラメーターの順序と存在に強く依存しているため、不安定であり、URLの変更要求(つまり、追加のパラメーターまたは変更された)が発生した場合に、後で戻ってくることがありますパラメータの順序またはエンコードされたものなど.
以下を参照してください:
import org.Apache.http.NameValuePair;
import org.Apache.http.client.utils.URLEncodedUtils;
import Java.net.URI;
import Java.util.List;
String url = vars.get("RequestUrl");
List params = URLEncodedUtils.parse(new URI(url), "UTF-8");
for (NameValuePair param : params) {
if (param.getName().equals("put your actual param name here")) {
vars.put("RequestTask", param.getValue());
}
}
また、トラブルシューティングのヒントについては、チェックアウトする価値があります BeanShellの使用方法:JMeterのお気に入りの組み込みコンポーネント 。一般に、エラーロギングをローカライズするには、次のように使用する必要があります。
log.info("something");
log.error("something else");
したがって、ログにメッセージが表示されない場合、Beanshellは行を実行できず、上記のどこかで失敗しました。
また、Beanshellエラーメッセージはあまり有益ではありません。スクリプトでは次の構文を使用しています。
try {
//script logic here
}
catch (Throwable ex) {
log.error("Failed to do this or that", ex);
}
したがって、エラーstracktraceはjmeter.logファイルで読み取ることができます。
お役に立てれば。
エラー全体を見せていただけますか?
1つのステートメントを次々に追加して、どれが根本原因であるかを確認してください。
問題の原因である可能性がある結果(配列アクセス)について仮説を立てている可能性があります。
vuGenで記録されたJMSスクリプトをJMeterに変換する場合は、コピーされたlr
関数を探す必要があります。これにより、このエラーまたは類似のエラーがスローされます。
例:int orderlinecount = Integer.parseInt(lr.eval_string("strInt"));
Jmeterがスクリプトを正常に実行するためには、スクリプトにすべてのlr関連の関数がないことを確認する必要があります。