Хорошо, вы можете попытаться получить привязки, которые создает выполнение сценария:
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine se = mgr.getEngineByName("JavaScript");
try {
se.eval("var x;var a,b,c,d;var y = \"wow\";var z = y+'x';");
Bindings bindings = se.getBindings(ScriptContext.ENGINE_SCOPE);
System.out.println(bindings.keySet());
}
catch (ScriptException e) {
//e.printStackTrace();
}
это печатает [d, b, c, println, a, context, z, y, print, x]
, поскольку вы видите, что определены некоторые дополнительные привязки:*
и здесь мы отфильтровываем их
Set<String> keySet = bindings.keySet();
keySet.removeAll(Arrays.asList("context", "print", "println"));
System.out.println(keySet);
это печатает [d, b, c, a, z, y, x]