首页 > 解决方案 > Java JSObject.eval() 不起作用,是否需要导入?

问题描述

我已经尝试了几种不同的方法来处理 Java 中的 JavaScript 函数、控制结构等,其中包括 JSObject.eval():

public class Interpreter{
    public static void eval (String input) {
        JSObject.eval(input);
    }
    public static void main (String[ ] args) {
        Interpreter Program = new Interpreter();
        Program.eval("console.log('hello');");
    }
}

输出:

_Interpreter.java:92: error: cannot find symbol
        JSObject.eval(input);
        ^
  symbol:   variable JSObject
  location: class Interpreter
1 error_

标签: javascriptjavaeval

解决方案


您可以使用ScriptEngineAPI 来评估 JS 脚本:

//with the following imports:
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;


public static void main (String[ ] args) {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("js");
        try {
            Object result = engine.eval("var a = 4, b = 5; a * b");
            System.out.println(result);
        }catch (ScriptException e){
            e.printStackTrace();
        }
    }

推荐阅读