zoukankan      html  css  js  c++  java
  • java执行脚本文件

    JDK8中新添加了ScriptEngineManager类用于调用脚本文件

    ScriptEngineManager类常用方法

    • getEngineByExtension(String extension) 查找并创建一个ScriptEngine一个给定扩展
    • getEngineByName(String shortName) 查找并为给定的名称创建一个 ScriptEngine 。
    • put(String key, Object value) 方法在全局范围中设置指定的键/值对。
    • get(String key) 获取全局范围中指定键的值。

    ScriptEngine接口常用方法

    • eval(Reader reader)eval(String)相同,只是脚本的来源以 Reader形式提供
    • Object eval(String script) 执行指定的脚本。
    • get(String key) 检索在此引擎状态下设置的值。
    • put(String key, Object value) 在ScriptEngine的状态下设置一个键/值对,可以创建一个Java语言绑定,以便在执行脚本时使用,或者以某种其他方式使用,具体取决于该键是否被保留。

    代码示例

    public void hello() throws Exception{
            ScriptEngineManager manager = new ScriptEngineManager();
            //JavaScript可以简写为js
            ScriptEngine engine = manager.getEngineByName("JavaScript");
            //也可以采用ScriptEngine engine = new ScriptEngineManager().getEngineByExtension("js");
            //jdk8对ES6的支持 ScriptEngine engine = new NashornScriptEngineFactory().getScriptEngine("--language=es6");
            engine.eval("print('hello word!!')");
        }
    

    hello.js脚本文件

    print(hello);//支持print()打印
    
    public void hello() throws Exception {    
        ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");    
        String script = FileCopyUtils.copyToString(new  FileReader("hello.js"));    
        String hello = "hello word!";    
        engine.put("hello", hello);   
        engine.eval(script);
        }
    
  • 相关阅读:
    linux下创建virtualenv时指定python版本
    Centos7系统如何不重启系统识别新添加的硬盘?
    centos7系统下hostname解析
    Linux之shell脚本for、while、case语句的高级用法
    Linux自制编译内核
    Centos7系统详细的启动流程
    cpio的用法
    Linux之删除带有空格的文件(而不是目录)
    Linux之特殊的环境变量IFS以及如何删除带有空格的目录
    zabbix使用自定义脚本监控内存
  • 原文地址:https://www.cnblogs.com/lingdu9527/p/11857918.html
Copyright © 2011-2022 走看看