簡體   English   中英

是否可以將 javascript 文件導入 java ScriptEngine

[英]Is it possible to import javascript files to a java ScriptEngine

我正在使用 nashorn java ScriptEngine。 我想評估一個包含其他腳本的腳本。 我知道我可以直接在 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,並且引擎會將評估的腳本保留在其上下文中。 所以這是我的代碼:

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 的腳本中使用它們。

javax.script.ScriptEngine有很多“ eval ”方法 - 有 java.io.Reader 接受這樣的eval方法 -> eval

您可以通過java.io.FileReaderjdk.nashorn.api.scripting.URLReader從文件或 URL 加載腳本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM