Java load SaveService.loadProperties()上的jmeter错误;
我想做的是: 我构建了一个java服务,加载一个测试计划并运行该测试计划。我没有使用任何Bash脚本和jmeter GUI。java应用程序是作为服务构建的,因此可以在云中运行。我们的想法是,仅仅创建一些直径交通数据 当我在intellij(本地)上运行src时,一切正常 启动应用程序,一切正常Java load SaveService.loadProperties()上的jmeter错误;,java,jmeter,Java,Jmeter,我想做的是: 我构建了一个java服务,加载一个测试计划并运行该测试计划。我没有使用任何Bash脚本和jmeter GUI。java应用程序是作为服务构建的,因此可以在云中运行。我们的想法是,仅仅创建一些直径交通数据 当我在intellij(本地)上运行src时,一切正常 启动应用程序,一切正常 java -jar -Dserver.port=8090 diameter-service-0.0.1-SNAPSHOT.jar 运行REST请求: localhost:8090/api/v1/enc
java -jar -Dserver.port=8090 diameter-service-0.0.1-SNAPSHOT.jar
运行REST请求:
localhost:8090/api/v1/encode
请求后,我收到以下错误:
java.io.FileNotFoundException: file:/Users/myuser/Downloads/diameter-service-0.0.1-SNAPSHOT.jar!/jmeter/bin/saveservice.properties (No such file or directory)
我检查的第一件事是jMeter回家。
控制台上的系统输出:
HOME: file:/Users/myuser/Downloads/diameter-service-0.0.1-SNAPSHOT.jar!/jmeter
这些文件也可用,位于类路径中的bin和slo下
/src/main/resources/jmeter/bin/saveservice.properties
/src/main/resources/jmeter/bin/jmeter.properties
/src/main/resources/jmeter/bin/user.properties
我认为jMeter主路径是可以的。。或者这是一个错误的假设?
jMeter无法加载saveservice.properties的方式
这是因为jmeter试图用file类打开文件吗?
java如何加载saveservice.properties?或者这不是必需的,因为jMeter Home已设置
private static final String jMeterHomePath = "/jmeter";
private static final String jMeterPropertiesFile = jMeterHomePath + "/bin/jmeter.properties";
...
File propertiesFile = FileStreamUtil.jMeterPropertiesToTempFile(jMeterPropertiesFile);
String jMeterPropertiesPath = propertiesFile.getPath();
StandardJMeterEngine jMeter = new StandardJMeterEngine(); JMeterUtils.setJMeterHome(Encoder.class.getResource(jMeterHomePath).getPath());
JMeterUtils.loadJMeterProperties(jMeterPropertiesPath);
JMeterUtils.initLogging();
JMeterUtils.initLocale();
String home = JMeterUtils.getJMeterHome();
System.out.println("HOME: "+home);
SaveService.loadProperties();
根据saveservice.properties
文件读取如下:
// some code
private static final String SAVESERVICE_PROPERTIES_FILE = "/bin/saveservice.properties";
// Property name used to define file name
private static final String SAVESERVICE_PROPERTIES = "saveservice_properties"; // $NON-NLS-1$
// some more code
public static Properties loadProperties() throws IOException{
Properties nameMap = new Properties();
try (FileInputStream fis = new FileInputStream(JMeterUtils.getJMeterHome()
+ JMeterUtils.getPropDefault(SAVESERVICE_PROPERTIES, SAVESERVICE_PROPERTIES_FILE))){
nameMap.load(fis);
}
return nameMap;
}
因此,您需要确保JMeter Home下有bin/saveservice.properties
文件,这样它将按预期工作
如果您要将JMeter打包到您的解决方案中,您将需要这样做才能使它工作。否则,您将需要修补前面提到的SaveService类,以便它从资源文件中读取属性
有关JMeter测试的编程执行以及一些示例的更多信息,请参阅本文 当文件位于Jar中时,无法打开文件类为file的文件。 它无法处理文件url中的感叹号(!) 如果这是您的问题,请在此处查看解决方案:
打开jar并检查您是否拥有以下资源:
jmeter/bin/saveservice.properties
在classpath目录中或jar的根目录下实际上,我已经让它运行到了云端。好的,要在云中解包一些不可能的地方,我们现在没有文件服务。另一点是我在web上的每一个地方都找到了带有该调用的java代码:JMeterUtils.loadJMeterProperties(jMeterPropertiesPath);这没有意义,因为我没有使用返回值但是,这并不是故事的结尾,因为JMeter需要更多的属性文件,即升级.properties,您将无法使用它来玩这个把戏,因为JMeter会向它添加一个额外的斜杠,即使您重写propertyNo,这不是我知道如何从类路径获取文件的问题。关键是JMeter是为在文件系统环境中使用而构建的。我现在得到了在云中运行服务的解决方案。我将所有道具文件从容器移动到临时文件夹,并将JMeter指向该路径。