2016-08-17 117 views
0

这是我的BeanShell代码来创建一个文件和一行追加到它创建文件时:的JMeter错误尝试使用BeanShell的

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("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(); 

如果你不希望有一些默认的名称,也可以在此时退出脚本你不忘记使用像“字符串FileName = vars.get ...” –

+0

我曾尝试声明它为一个字符串,如你所说,但这并没有解决问题 – user3871995

+0

你有正确的f和p的声明? –

回答

2

的问题是:如果FileName为null,对于FileOutputStream构造函数将抛出一个异常,而BeanShell中不显示潜在异常巨大。所以,你需要的是文件名是空处理情况:

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

所以我想这一点,我也得到了同样的错误: “响应代码:500 响应消息:org.apache.jorphan.util.JMeterException:错误调用BSH方法:EVAL \t源文件:内嵌的评价:'' FileName = vars.get(“fileName”); if(FileName == null)。 。 。 '':对象构造函数' – user3871995

+0

如果你只是复制/粘贴我建议的整个脚本,它是否工作? (因为我认为第一行也是一个问题,正如前面的评论所建议的)。 –