zoukankan      html  css  js  c++  java
  • 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));
        }
    }
    

      

  • 相关阅读:
    redis学习(二)-高级特性
    redis学习(一)-基础知识
    设计模式类型
    装饰者设计模式
    udp代理
    docker: unrecognized service
    centos6.x 编译安装zabbix_proxy 2.2.5
    写了一个shell,删除15天以上日志
    tempo 删除团队失败
    github批量删除organization下的private repo
  • 原文地址:https://www.cnblogs.com/liqiujiong/p/10445868.html
Copyright © 2011-2022 走看看