当前位置: 首页 > 知识库问答 >
问题:

JMeter/BeanShell:类型化变量声明:数组初始化器错误:null

席俊
2023-03-14

响应消息:org.apache.jorphan.util.JMeterException:调用bsh方法时出错:eval Sourced file:inline evaluation of:'import java.io.FileWriter;导入java.util.Arrays;导入java.io.Writer;伊波尔。.':类型化变量声明:数组初始值设定项中的错误:日志文件中的null

2018/02/01 12:32:52 error-jmeter.util.BeanShellInterpreter:调用bsh方法时出错:eval Sourced file:inline evaluation of:'import java.io.fileWriter;导入java.util.Arrays;导入java.io.Writer;伊波尔。.':类型化变量声明:数组初始值设定项错误:null

2018/02/01 12:32:52 warn-jmeter.protocol.java.sampler.beanshellSampler:org.apache.jorphan.util.jmeterException:调用bsh方法时出错:eval Sourced file:inline evaluation of:'import java.io.fileWriter;导入java.util.Arrays;导入java.io.Writer;伊波尔。.':类型化变量声明:数组初始值设定项错误:null

有人帮忙吗?:)

    import java.io.FileWriter;
import java.util.Arrays;
import java.io.Writer;
import java.util.List;

//Default separator
char SEPARATOR = ',';

//function write line in csv
public void writeLine(FileWriter writer, String[] params, char separator)
{
   boolean firstParam = true;

   StringBuilder stringBuilder = new StringBuilder();
   String param = "";

   for (int i = 0; i < params.length; i++)
   {
      //get param
      param = params[i];
      log.info(param);

         //if the first param in the line, separator is not needed
       if (!firstParam) 
       {
           stringBuilder.append(separator);
       }

         //Add param to line
       stringBuilder.append(param);

       firstParam = false;
   }

   //prepare file to next line
   stringBuilder.append("\n");

   //add to file the line
   log.info(stringBuilder.toString());
   writer.append(stringBuilder.toString());

}

//get path of csv file (creates new one if its not exists)
String csvFile = "/JMeter/dane.csv"; // for example '/User/Downloads/blabla.csv'

String[] params = {${context1}, ${context2}};

FileWriter fileWriter = new FileWriter(csvFile, true);
writeLine(fileWriter, params, SEPARATOR);

//proper close to file
fileWriter.flush();
fileWriter.close();

共有1个答案

游高杰
2023-03-14

>

  • 使用调试采样器和查看结果树侦听器组合,再次检查context1context2变量值
  • 将第47行修改为:

    String[] params = {"${context1}", "${context2}"};
    

    如果您仍然面临问题,请尝试在try块中围绕您的代码,如下所示:

    try {
        //your code here
    }
    catch (Throwable ex) {
       log.info("Error in Beanshell", ex);
       throw ex;
    }
    

    这样,您将在jmeter.log文件中获得一个“人类可读的”stacktrace。

  •  类似资料:
    • 嘿,我正在为JMeter中的API测试做一些beanshell脚本。我已经用beanshell编写了很多jmeter脚本,它在使用方法调用时工作得很好,但是我有一个带有小数位数的值,其中SQL返回值为20.00000,而Json路径提取器得到值为20.0,因此在比较时测试失败。由于这个问题,我决定将这些值作为double变量而不是字符串进行比较,但在BeanShell上使用double.Parse

    • 本文向大家介绍tensorflow 声明和初始化可变张量,包括了tensorflow 声明和初始化可变张量的使用技巧和注意事项,需要的朋友参考一下 示例 当值需要在会话中更新时,使用可变张量。这是在创建神经网络时将用于权重矩阵的张量类型,因为这些值将在训练模型时更新。 可以使用或函数声明可变张量。建议使用,因为它提供了更大的灵活性,例如:tf.Variable()tf.get_variable()

    • 我创建了包含构造函数和toString方法的类主管。但是,当我试图打印数组的索引时,出现了一个错误,“变量svArray可能尚未初始化。我该如何解决这个问题?”?

    • 问题内容: 我的Java程序中出现以下错误: Java变量未初始化错误…错误:变量nam和r未初始化位置类子级 但是并且已经初始化,但是我仍然遇到相同的错误。 问题答案: 不要获取 默认值 ,应在使用它们之前对其进行初始化,并使用main中的默认值进行初始化,这样就可以了。 顺便说一句,考虑为您的类和变量命名是有意义的。

    • 指针变量的值为内存地址。通常变量直接包含特定值,而指针则包含特定值变量的地址。因此可以说,变量名直接(directly)引用数值,而指针间接(indirectly)引用数值(如图 5.1 通过指针引用数值称为间接引用。 指针和任何其他变量一样,应先声明后使用。下列声明: int *countPtr, count; 声明变量 countPtr 的类型为 int*(即指向整型值的指针),或者说成 co

    • 问题内容: 这行代码给出以下警告: 警告:变量sh只能在此位置为null。 并且,此代码给出以下警告: 警告:局部变量sh可能尚未初始化。 问题答案: 这是因为您需要初始化数组。试试这个: 如果不初始化,则会收到这些警告,如果运行它也会得到警告。