ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of:

Val picture Val · Jun 16, 2016 · Viewed 11.9k times · Source

Getting below error when i run the jmeter script having Beanshell Post Processor as a child to a sampler.

ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval Sourced file: inline evaluation of: ``try { newuser= vars.get("prevUsrResponse"); org.json.JSONObject userJSON= new o . . . '' : Typed variable declaration : Class: org.json.JSONObject not found in namespace

Below is the code written and run in jMeter 2.9.

newuser= vars.get("prevUsrResponse");
org.json.JSONObject userJSON= new org.json.JSONObject(newuser);

if(prevUsrJSON.has("User") && custJSON.get("User")!= null) {
   org.json.JSONObject contactJSON = userJSON.getJSONObject("User");

  contactJSON.put("UserType","Private");

}

vars.put("updatedUser", userJSON.toString());

${updatedUser} variable doesn't return the json(or any value) when used in the next sampler request.

Answer

Dmitri T picture Dmitri T · Jun 16, 2016

There can be the following possible reasons:

  1. You don't have the .jar which provides org.json.JSONObject class in JMeter CLASSPATH.

    • Download the jar i.e. from the Maven central repo
    • Copy it to JMeter's "lib" folder
    • Restart JMeter to pick the .jar up
  2. You dont have the relevant import line. Add it to the beginning of your script:

    import org.json.JSONObject;
    

You can also consider upgrading to JMeter 3.0 which comes with built-in JSON support and provides JSON Path PostProcessor to extract data from JSON responses. If you still want Beanshell - it is also possible, just use json-smart classes