运行 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");