[英]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.