I have tried to call javascript function from java code, but I am getting the following error while using javascript API:
Caused by: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "File" is not defined. (#8) at sun.org.mozilla.javascript.internal.ScriptRuntime.constructError(ScriptRuntime.java:3770) at sun.org.mozilla.javascript.internal.ScriptRuntime.constructError(ScriptRuntime.java:3748) at sun.org.mozilla.javascript.internal.ScriptRuntime.notFoundError(ScriptRuntime.java:3833) at sun.org.mozilla.javascript.internal.ScriptRuntime.name(ScriptRuntime.java:1760) at sun.org.mozilla.javascript.internal.Interpreter.interpretLoop(Interpreter.java:1785) at sun.org.mozilla.javascript.internal.Interpreter.interpret(Interpreter.java:849)
java code:
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();
}
display function working fine, the error appear while executing writeTextFile function.