Javascript 非法使用未定义的变量、类或';无效';字面意义的

Javascript 非法使用未定义的变量、类或';无效';字面意义的,javascript,jmeter,beanshell,jmeter-plugins,Javascript,Jmeter,Beanshell,Jmeter Plugins,每当尝试使用以下代码调用JavaScript函数时,我会遇到以下异常: 断言失败消息:org.apache.jorphan.util.JMeterException:调用bsh方法时出错:评估源文件:内联评估:``vars.put(“FinalData”,decode64(PD94BWWGDMVYC2LVBJ0IMS4WIILBMNVZGLUZZ0IVVRGLTGII…'':非法使用未定义的变量、类或“void”文本 以下是BSFPost流程: function decode64(input)

每当尝试使用以下代码调用JavaScript函数时,我会遇到以下异常:

断言失败消息:org.apache.jorphan.util.JMeterException:调用bsh方法时出错:评估源文件:内联评估:``vars.put(“FinalData”,decode64(PD94BWWGDMVYC2LVBJ0IMS4WIILBMNVZGLUZZ0IVVRGLTGII…'':非法使用未定义的变量、类或“void”文本

以下是BSFPost流程:

function decode64(input) {
     var output = "";
     var chr1, chr2, chr3 = "";
     var enc1, enc2, enc3, enc4 = "";
     var i = 0;

     // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
     var base64test = /[^A-Za-z0-9\+\/\=]/g;
     if (base64test.exec(input)) {
        alert("There were invalid base64 characters in the input text.\n" +
              "Valid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\n" +
              "Expect errors in decoding.");
     }
     input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

     do {
        enc1 = keyStr.indexOf(input.charAt(i++));
        enc2 = keyStr.indexOf(input.charAt(i++));
        enc3 = keyStr.indexOf(input.charAt(i++));
        enc4 = keyStr.indexOf(input.charAt(i++));

        chr1 = (enc1 << 2) | (enc2 >> 4);
        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
        chr3 = ((enc3 & 3) << 6) | enc4;

        output = output + String.fromCharCode(chr1);

        if (enc3 != 64) {
           output = output + String.fromCharCode(chr2);
        }
        if (enc4 != 64) {
           output = output + String.fromCharCode(chr3);
        }

        chr1 = chr2 = chr3 = "";
        enc1 = enc2 = enc3 = enc4 = "";

     } while (i < input.length);
     return output;
}

数据是可变的并存储值:

2.在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国,在中国ZZT4=


FinalData
是预定义变量。

这不是预处理器的工作方式,您有两个选项:

  • 创建一个包含decode64方法的类,将其打包到一个jar中,并将其放入lib文件夹中

  • 使用commons编解码器,因为它已经存在于jmeter依赖项中


不管怎样,您都可以删除预处理器中的函数声明。这与预处理器的工作方式无关,您有两个选项:

  • 创建一个包含decode64方法的类,将其打包到一个jar中,并将其放入lib文件夹中

  • 使用commons编解码器,因为它已经存在于jmeter依赖项中


无论如何,你会删除预处理器中的函数声明

我试过了,但是下面出现了异常,我想这是Jar的问题,因为我试着把简单的函数放进去,它返回的字符串工作正常,但同一个类有解码函数,它不工作。我查看了Jar,我可以看到Jar和类路径指向同一个。。-`import JmeterAutomation.*;Javadecode dc=new Javadecode();print(dc.testme());S…'':尝试访问未定义变量或类名的属性只需尝试我的第二个选项,或提供关于您放入JarSecond中的类的更多详细信息。第二个选项对我有效,但我仍然希望了解如何在我的JMETER项目中使JAR工作。在我的代码中,我执行了与您在第二个选项中提到的相同的操作。有什么方法可以帮助我吗在这里安装我的JAR?包JmeterAutomation;导入org.apache.commons.codec.binary.Base64;导入org.apache.commons.codec.binary.StringUtils;公共类Javadecode{public String decode(String s){return StringUtils.newStringUtf8(Base64.decodeBase64(s));}公共字符串编码(String s){return Base64.encodeBase64String(StringUtils.getBytesUtf8(s));}公共字符串替换我(字符串输入){返回输入.replace(“RequestPartsResponse”,“GetPartRequestStatusRequest”);//返回“Tested”;}完成了,谢谢你的帮助…我发现,我的JAR确实有外部JAR,但上面的代码不知怎么的无法访问这些。我只是在lib中手动复制了这些JAR,它工作了。我尝试了,但下面出现了异常,我想这是JAR的一部分,因为我尝试放置了简单的函数,该函数返回的字符串工作正常,但与c相同lass有解码功能,但它不起作用。我查看了Jar,可以看到Jar和类路径指向相同的..-`import JmeterAutomation.*;Javadecode dc=new Javadecode();print(dc.testme());S…'':尝试访问未定义变量或类名的属性只需尝试我的第二个选项,或提供关于您放入JarSecond中的类的更多详细信息。第二个选项对我有效,但我仍然希望了解如何在我的JMETER项目中使JAR工作。在我的代码中,我执行了与您在第二个选项中提到的相同的操作。有什么方法可以帮助我吗在这里安装我的JAR?包JmeterAutomation;导入org.apache.commons.codec.binary.Base64;导入org.apache.commons.codec.binary.StringUtils;公共类Javadecode{public String decode(String s){return StringUtils.newStringUtf8(Base64.decodeBase64(s));}公共字符串编码(String s){return Base64.encodeBase64String(StringUtils.getBytesUtf8(s));}公共字符串替换我(字符串输入){返回输入.replace(“RequestPartsResponse”,“GetPartRequestStatusRequest”);//返回“Tested”;}完成了,谢谢你的帮助…我发现,我的JAR确实有外部JAR,但是上面的代码不知怎么的无法访问这些。我只是在lib中手动复制了这些JAR,它工作了。
vars.put("FinalData", decode64(${Data}));
vars.put("FinalData", decode64(vars.get("Data")));