E aí pessoal, beleza? Depois de uma discussão com um amigo sobre chamar funções do js no java, eu acabei achando uns trechos de código bem interessante, vou estar postando aqui para futuras dúvidas.
Bom, primeiro eu criei um arquivo chamado script.js
e dentro dele uma função bem básica (JavaScript
):
function multiplicar(numero) {
return numero * numero; //Basicamente ele só vai multiplicar o número por ele mesmo.
}
É isso, criei o arquivo, inseri a função, salvei. OK.
Fui na minha IDE e criei o seguinte método (Java):
public void multiplicarNumero(int numero) throws NoSuchMethodException, FileNotFoundException, ScriptException {
//NoShuchMethod (Método não encontrado), FileNotFound (Arquivo não encontrado), ScriptException (Como o nome já diz, tem erro no seu script).
ScriptEngineManager factory = new ScriptEngineManager(); // Permite escolher linguagens diferentes da tradicional Java
ScriptEngine engine = factory.getEngineByName("JavaScript"); //Escolhemos a linguagem que será utilizada, nesse caso é o JavaScript
Invocable invocable = (Invocable) engine;
engine.eval(new FileReader("C:\\Imperium\\script.js")); //escolhemos onde o arquivo está, pasta+arquivo.extensao
Double resultado = (Double) invocable.invokeFunction("multiplicar", numero); //Aqui chamamos o a Function do nosso Script ("multiplicar") e passamos a variável "número" que declaramos no método.
System.out.println("O resultado da sua função é: " + resultado); //Aqui a gente mostra o resultado
}
Saída: O resultado da sua função é: 100.0
Espero que seja útil para vocês