Nashorn:如何在脚本模式下评估脚本

时间:2014-05-24 19:51:28

标签: nashorn

我开始探索jdk 8新的javascript引擎nashorn,并希望构建一些自动化任务脚本。我有一个问题,我不知道如何使用engine.eval()例如从javascript在脚本模式下评估js文件。

p.s:我不是在谈论jjs -scripting哪个好,但只能单向运行。我想要另一种方式;从java

以脚本模式评估引擎

3 个答案:

答案 0 :(得分:1)

最简单的方法是将-Dnashorn.args = -scripting添加到java命令行。

答案 1 :(得分:0)

经过大量的讨论,我想出了一个技巧,我可以通过手工制作的系统进程的命令行实现我的脚本执行:

//tricking the nashorn engine with jjs command
    public void evalScriptInScriptingMode(String fileName)
    {
        String[] args = new String[]{"jjs", "-scripting", fileName};

        //This class is used to create operating system processes
        ProcessBuilder pb = new ProcessBuilder(args);

        pb.directory(null);

        File log = new File("jjs_log.txt");

        int i = 0;

        while(log.exists())
        {
            i++;
            log = new File("jjs" + i + "_log.txt");
        }


        pb.redirectErrorStream(true);
        pb.redirectOutput(ProcessBuilder.Redirect.appendTo(log));
        Process p = null;

        try
        {
            p = pb.start();    //start the process which remains open
        }
        catch(IOException e)
        {
            e.printStackTrace();
        }
    }

答案 2 :(得分:0)

您可以通过NashornScriptEngineFactory将参数传递给脚本引擎。

import jdk.nashorn.api.scripting.NashornScriptEngineFactory

new NashornScriptEngineFactory()
    .getScriptEngine( "-scripting" )
    .eval( "" );