JMeter:Setup Thread Group中BeanShell Sampler获取系统属性返回null怎么办?
在JMeter的BeanShell中正确获取系统属性的方法
首先得澄清一个容易混淆的点:你用的System.getenv()是用来读取环境变量的,而不是JVM系统属性,这就是为什么拿不到值的原因。而props.get()是读取JMeter自身的属性集合,和系统属性不是同一个对象,除非你把系统属性同步到JMeter属性里。下面给你两种可行的解决办法:
方法一:直接读取JVM系统属性
用System.getProperty()方法来获取,这是读取JVM系统属性的正确方式,替换你原来的代码:
String filename = System.getProperty("server.portal.articleFile"); System.out.println(filename);
这样就能直接拿到Debug Sampler里显示的那个系统属性值了。
方法二:将系统属性同步到JMeter属性后读取
如果你更习惯用props对象来获取,可以先把系统属性导入到JMeter的属性集合中:
- 打开JMeter的
user.properties文件(在JMeter安装目录的bin文件夹下) - 添加一行配置:
server.portal.articleFile=${__P(server.portal.articleFile,)}
- 重启JMeter后,就可以用你原来的
props.get()方法获取到值了:
String filename = props.get("server.portal.articleFile"); System.out.println(filename);
另外补充一下:Debug Sampler里显示的系统属性属于JVM层面的,所以第一种方法是最直接有效的,不需要额外配置。
内容的提问来源于stack exchange,提问作者JGleason
相关产品推荐
相关产品推荐

