是否可以将javascript文件导入java脚本引擎

是否可以将javascript文件导入java脚本引擎,javascript,java,nashorn,Javascript,Java,Nashorn,我正在使用nashorn java脚本引擎。我想评估一个脚本,其中包括其他脚本。我知道我可以直接在javascript本身中使用load指令,但我更愿意直接从实例化scriptEngine的java代码导入或加载它。 有办法做到这一点吗?比如: void evaluateScript(String scriptName, String dependency) { ScriptEngineManager factory = new ScriptEngineManager(); Sc

我正在使用nashorn java脚本引擎。我想评估一个脚本,其中包括其他脚本。我知道我可以直接在javascript本身中使用load指令,但我更愿意直接从实例化scriptEngine的java代码导入或加载它。 有办法做到这一点吗?比如:

void evaluateScript(String scriptName, String dependency) {
    ScriptEngineManager factory = new ScriptEngineManager();
    ScriptEngine jsEngine = factory.getEngineByName("nashorn");
    jsEngine.load(depency); // does not exist.
    jsEngine.eval();
}
我看到“加载”功能不存在。我怎样才能做到这一点

谢谢

有很多“eval”方法-有java.io.Reader接受这样的eval方法->


您可以传递或从文件或URL加载脚本。

事实上,我自己找到了答案:如评论中所述,可以使用不同的脚本、相同的引擎调用多个eval,引擎将在其上下文中保留已评估的脚本。这是我的代码:

public void executeScript(String scriptName, String[] dependencies) {
    try {
        FileReader script = new FileReader(scriptName);
        ScriptEngineManager factory = new ScriptEngineManager();
        ScriptEngine jsEngine = factory.getEngineByName("nashorn");

        if(dependencies != null) {
            for (String dependency : dependencies) {
                FileReader dependencyFile = new FileReader(dependency);
                jsEngine.eval(dependencyFile);
            }
        }

        jsEngine.eval(script);
    }
}

我可以在依赖项中定义函数,并在名为scriptName的脚本中使用它们。

您好,谢谢您的回答,但这不符合我的问题:我想在脚本中执行一个脚本,同时执行其他脚本otherScriptList。但是我将尝试使用同一个引擎对不同的脚本进行评估,并检查引擎是否在其上下文中保留了以前的脚本。是的,同一个引擎保留了“上下文”!