簡體   English   中英

從Java調用外部javascript函數

[英]Calling external javascript function from java

我試圖從Java代碼調用javascript函數,但是在使用javascript API時遇到以下錯誤:

原因:sun.org.mozilla.javascript.internal.EcmaError:ReferenceError:未定義“文件”。 (#8),位於sun.org.mozilla.javascript.internal.ScriptRuntime.constructError(ScriptRuntime.java:3748)處,位於sun.org.mozilla.javascript.internal.ScriptRuntime.constructError(ScriptRuntime.java:3770) sun.org.mozilla.javascript.internal.ScriptRuntime.name(ScriptRuntime.java:1760)上的.mozilla.javascript.internal.ScriptRuntime.notFoundError(ScriptRuntime.java:3833)在sun.org.mozilla.javascript.internal.Interpreter sun.org.mozilla.javascript.internal.Interpreter.interpret(Interpreter.java:849)上的.interpretLoop(Interpreter.java:1785)

Java代碼:

    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine = manager.getEngineByName("JavaScript");

    engine.eval(Files.newBufferedReader(Paths.get("D:/test/test.js"), StandardCharsets.UTF_8));
    Invocable inv = (Invocable) engine;

    inv.invokeFunction("display", "test");
    inv.invokeFunction("writeTextFile", "D:\\test\\file.txt", "test");

test.js:

var display = function(name) {
    print("Hello, I am a Javascript display function "+name);
    return "display function return"
}

function writeTextFile(afilename, output) {
    var txtFile = new File(afilename);
    txtFile.writeln(output);
    txtFile.close();
}

顯示函數工作正常,執行writeTextFile函數時出現錯誤。

在您的test.js中,嘗試:

var txtFile = new File([""], afilename);

暫無
暫無

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

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