ExceptionInInitializerError when adding bindings to engine scope

Viewed 24

Upgrading from nashorn to graalvm with openjdk 17. getting a PolyglotException: java.lang.ExceptionInInitializerError when adding bindings to engine scope. my script engine is getting initialized in init method & later used in different class. Wondering if its multi threading issue. unable to figure out the root cause

script engine gets initialized in init block of class 1 & 2.

Class 1

public void init() {
createScriptEngine
}

Class 2

public static ScriptEngine createScriptEngine (){
ScriptEngineManager manager = new ScriptEngineManager();
ret = manager.getEngineByName(engineName);
if(ret instanceof GraalJSScriptEngine) {
Bindings bindings = ret.getBindings(ScriptContext.ENGINE_SCOPE);
bindings.put("polyglot.js.nashorn-compat", true);
}
}

The engine itself is used in class 3 to evaluate script class 3

  private object evaluateScript(ScriptEngine scriptEngine, String script){
    Bindings bindings = scriptEngine.getContext().getBindings(ScriptContext.ENGINE_SCOPE);
    bindings.put(SCRIPT_VAR_t1, this);
    bindings.put(SCRIPT_VAR_t2, cTag);
    bindings.put(SCRIPT_VAR_t3, tAttribs
    Object ret = scriptEngine.eval(script, scriptEngine.getContext());
    }
1 Answers

The issue is resolved now after creating context only once.

Related