javascript - 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_
解决方案
您可以使用ScriptEngine
API 来评估 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();
}
}
推荐阅读
- excel - Excel - 希望使用 VBA 来构建包含复制额外单元格的目录
- java - 如何获取具有父 DataLakeDirectoryClient 类实例的子文件/目录列表
- java - “java.lang.NullPointerException:无法调用“java.sql.Connection.prepareStatement(String)”,因为“this.con”为空”
- c# - 为什么分配异步等待事件处理程序不会导致任何问题?
- python - pytest 参数化一个自动使用的夹具
- swift - 准则 2.1 - 性能 - 空白无响应屏幕
- java - 使用 FileProvider 共享下载文件夹中的音频文件
- f# - 使用部分应用程序在 F# 中订阅 c# 事件
- powershell - 将excel变量读入power shell并输出
- .net - VB.Net RSA 无法使用带有 RSACryptoServiceProvider 的给定公钥加密文本