运行 Nashorn 程序没有得到结果
Not getting result when ran the Nashorn program
我是 Nashorn 的新手,我正在尝试编写一个程序并尝试 运行 该程序,但在 运行 program.Please 找到我的代码后我得到了结果下面。
package com.nashron;
import java.io.FileNotFoundException;
import java.io.FileReader;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class InvokScriptObjectMethod {
public static void main(String[] args){
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");
try {
engine.eval(new FileReader("src/script/Script.js"));
} catch (ScriptException | FileNotFoundException ex) {
}
}
}
JS:
var Script = Java.type("com.nashron.Script");
var var1 = new Script("who am i");
return var1.get("I am Amar");
Java :
package com.nashron;
public class Script {
public Script() {
}
public Script(String arg1) {
this.var1 = arg1;
System.out.println("this is contructor");
}
private String var1;
public String get(String arg1) {
System.out.println("this is return statement");
return this.var1 + arg1;
}
}
这里我要获取return值。
提前致谢
顶级脚本不能有 "return" 语句。这是根据 ECMAScript 规范。您的程序将导致抛出 ScriptException - 因为您的 JS 代码中有一个 return 语句(在顶层)。如果您只是删除 return,最后计算的表达式是 return 来自 engine.eval 调用。
示例:
文件:Main.java
import javax.script.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
ScriptEngineManager m = new ScriptEngineManager();
ScriptEngine e = m.getEngineByName("nashorn");
Object val = e.eval(new FileReader("x.js"));
System.out.println(val);
}
}
文件:x.js
java.lang.System.getProperty("os.name");
我是 Nashorn 的新手,我正在尝试编写一个程序并尝试 运行 该程序,但在 运行 program.Please 找到我的代码后我得到了结果下面。
package com.nashron;
import java.io.FileNotFoundException;
import java.io.FileReader;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class InvokScriptObjectMethod {
public static void main(String[] args){
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");
try {
engine.eval(new FileReader("src/script/Script.js"));
} catch (ScriptException | FileNotFoundException ex) {
}
}
}
JS:
var Script = Java.type("com.nashron.Script");
var var1 = new Script("who am i");
return var1.get("I am Amar");
Java :
package com.nashron;
public class Script {
public Script() {
}
public Script(String arg1) {
this.var1 = arg1;
System.out.println("this is contructor");
}
private String var1;
public String get(String arg1) {
System.out.println("this is return statement");
return this.var1 + arg1;
}
}
这里我要获取return值。
提前致谢
顶级脚本不能有 "return" 语句。这是根据 ECMAScript 规范。您的程序将导致抛出 ScriptException - 因为您的 JS 代码中有一个 return 语句(在顶层)。如果您只是删除 return,最后计算的表达式是 return 来自 engine.eval 调用。
示例:
文件:Main.java
import javax.script.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
ScriptEngineManager m = new ScriptEngineManager();
ScriptEngine e = m.getEngineByName("nashorn");
Object val = e.eval(new FileReader("x.js"));
System.out.println(val);
}
}
文件:x.js
java.lang.System.getProperty("os.name");