java中执行javascript案例

Nashorn js engine官方文档 
https://docs.oracle.com/javase/7/docs/technotes/guides/scripting/programmer_guide/#top 

 

java函数输出js的hello world:

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineFactory;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class Maub {
    public static void main(String args[]) throws ScriptException, NoSuchMethodException{
        //引擎管理器
        ScriptEngineManager m = new ScriptEngineManager();
        //获取引擎
        ScriptEngine engine = m.getEngineByName("JavaScript");
        //执行javascript代码
        engine.eval("function hello(name){print('hello '+name)}");
        //Javascript实现了invocable调用接口
        Invocable inv = (Invocable) engine;
        //调用函数hello,传入world
        inv.invokeFunction("hello","world");
    }
}

调用文件里的js脚本:

import java.io.FileNotFoundException;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineFactory;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class Maub {
    public static void main(String args[]) throws ScriptException, NoSuchMethodException, FileNotFoundException{//引擎管理器
        ScriptEngineManager m = new ScriptEngineManager();
        //获取引擎
        ScriptEngine engine = m.getEngineByName("JavaScript");
        //执行javascript代码
        engine.eval(new java.io.FileReader("E:\\Code\\Java\\src\\getpwd.js"));
        
        Invocable inv = (Invocable) engine;
        String arg[] = {"MDwwDQYJKoZIhvcNAQEBBQADKwAw","fot123456"};
        //使用Invocable调用脚本函数,传入String参数
        System.out.println(inv.invokeFunction("getpwd",arg));
    }
}

  

 

posted @ 2019-02-27 18:41  进击的嘎嘣脆  阅读(1943)  评论(0编辑  收藏  举报