Pessoal, alguém já usou mais a fundo a ScriptEngine do Java? Estou lendo um arquivo .js e dando um “compile” pra pegar o CompiledScript. Até aqui tudo bem, o problema é que quando tento invocar uma função, diz que ela não foi declarada. Mas se eu não compilo, apenas uso o “eval”, dai é possível invocar a function.
Cógido:
function teste(a){print(a);};
try {
jsEngine = new ScriptEngineManager().getEngineByName("JavaScript");
if (jsEngine instanceof Compilable) {
Compilable comp = (Compilable) jsEngine;
compiledScript = comp.compile(new InputStreamReader(this.getClass().getClassLoader().getResourceAsStream("teste.js")));
}
Invocable invocable = (Invocable) compiledScript.getEngine();
invocable.invokeFunction("teste","Testando método");
} catch (Throwable t) {
t.printStackTrace();
}
Se eu executar o cógido java da um erro dizendo:
java.lang.NoSuchMethodException: no such method: teste
Alguém, já passou por esse problema?