2016-08-17 21 views
0

BeanShellの使用してファイルを作成しようとするとこれは、ファイルを作成し、そこに1行を追加するために、私のBeanShellのコードです:JMeterのエラー

FileName = vars.get("fileName"); 

f = new FileOutputStream(FileName,true); 
p = new PrintStream(f); 
this.interpreter.setOut(p); 


print("Test Set: " + FileName); 

f.close(); 

私は、以前のサンプラーでの正規表現の抽出からファイル名を取得します。デバッグポストプロセッサをチェックし、これが正しく設定されていることを確認しました。しかし、私はサンプラーの結果にこのエラーが表示されます。

Response code: 500 
Response message: org.apache.jorphan.util.JMeterException: Error invoking bsh  method: eval Sourced file: inline evaluation of: ``FileName = vars.get("fileName"); f = new FileOutputStream(FileNam . . . '' : Object constructor 
+1

"String FileName = vars.get ..."のようなものを使用することを忘れていませんか? –

+0

私はあなたが言ったように文字列として宣言しようとしましたが、それは問題を解決していません – user3871995

+0

fとpの適切な宣言がありますか? ? –

答えて

2

問題がある:FileNameがnullの場合、FileOutputStreamのコンストラクタが例外をスローします、とBeanShellのは、根本的な例外を示すで素晴らしいではありません。それでは、あなたが必要なのは、ファイル名がnullの場合を処理することです:

String fileName = vars.get("fileName"); 

if(fileName == null) 
{ 
    fileName = "mydefaultname"; // assign some default name 
} 

f = new FileOutputStream(fileName, true); 
p = new PrintStream(f); 
this.interpreter.setOut(p); 


print("Test Set: " + fileName); 

f.close(); 

あなたには、いくつかのデフォルトの名前を持ってしたくない場合、あなたはまた、その時点でスクリプトを終了することができます。

if(fileName == null) 
{ 
    return; 
} 
+0

これを試したところ、同じエラーが発生しました: 'レスポンスコード:500 レスポンスメッセージ:org.apache.jorphan.util.JMeterException:bshメソッドを呼び出す際のエラー:eval \tソースファイル:インライン評価: '' FileName = vars.get( "fileName"); if(FileName == null) 。 。 '':Object constructor ' – user3871995

+0

私が全体として提案したスクリプトを単にコピー/ペーストすれば、それは機能しますか? (前のコメントで示唆したように、最初の行も問題だと思うので)。 –