【问题标题】:illegal use of undefined variable, class, or 'void' literal非法使用未定义的变量、类或“无效”字面量
【发布时间】:2013-06-26 23:56:47
【问题描述】:

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

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

下面是 BSFPostProcess:

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;
}

我正在尝试使用以下代码在 BSF 断言采样器下调用它。

vars.put("FinalData", decode64(${Data}));

vars.put("FinalData", decode64(vars.get("Data")));

数据是可变的并存储值:

PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI / Pgo8UmVxdWVzdFBhcnRzUmVzcG9uc2UgeG1sbnM9Imh0dHA6Ly9zZXJ2aWNlcy5teWNjY3BvcnRhbC5jb20vQWx0ZXJuYXRlUGFydFNvdXJjaW5nL0FsdGVybmF0ZVBhcnRTb3VyY2luZyI + CiAgICA8UGFydFJlcXVlc3RJZGVudGlmaWVyPjQwNTM4MTU8L1BhcnRSZXF1ZXN0SWRlbnRpZmllcj4KPC9SZXF1ZXN0UGFydHNSZXNwb25zZT4 = P>

FinalData 是预定义变量。

【问题讨论】:

    标签: javascript jmeter beanshell jmeter-plugins


    【解决方案1】:

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

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

    【讨论】:

    • 我确实尝试过,但是遇到了异常,我猜它与 Jar 有关,因为我试图放置返回 String 的简单函数,但同一个类具有解码函数它不起作用。我查看了 Jar,我可以看到 jars 和指向相同的类路径.. - `import JmeterAutomation.*; Javadecode dc=new Javadecode();打印(dc.testme());年代。 . . '' : 尝试访问未定义变量或类名的属性
    • 试试我的第二个选项,或者提供更多关于你放在 Jar 中的类的详细信息
    • 第二个选项对我有用,但我仍然想学习如何让 JAR 在我的 JMETER 项目中工作。在我的代码中,我执行了与您在第二个选项中提到的相同的事情。有什么办法可以在这里附加我的 JAR 吗?
    • 包JmeterAutomation;导入 org.apache.commons.codec.binary.Base64;导入 org.apache.commons.codec.binary.StringUtils;公共类Javadecode{公共字符串解码(字符串s){返回StringUtils.newStringUtf8(Base64.decodeBase64(s)); } 公共字符串编码(字符串 s){ 返回 Base64.encodeBase64String(StringUtils.getBytesUtf8(s)); } public String ReplaceMe(String input){ return input.replace("RequestPartsResponse", "GetPartRequestStatusRequest"); //返回“测试”; } }
    • 完成,感谢您的帮助...我知道了,我的 JAR 确实有外部 Jar,但上面的代码不知何故无法访问这些。我只是手动将那些 jar 复制到 lib 中,它就起作用了。
    猜你喜欢
    • 2012-11-10
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    相关资源
    最近更新 更多