Ita*_*man 11
您可以使用Java内置的脚本引擎:
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public static void main(String[] args) throws Exception {
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
Object result = engine.eval("my-java-script-code")
System.out.println("Result returned by Javascript is: " + result);
}
Run Code Online (Sandbox Code Playgroud)
这是一个更详细的例子.
此过程分为三个步骤:
第一步相当简单,Java 中有很多 HTTP 库可以执行此操作 - 您实际上想要模拟 wget 或 curl 等简单功能。执行此操作的确切方式将根据下一步所需 JS 文件的格式而有所不同,但获取字节流的过程很简单。
第二步需要在 Javascript 引擎中执行 JS。Java 本身无法解释 Javascript,因此您需要获得一个引擎来运行它 - Rhino是对此的常见选择。由于您需要在 Java 之外运行它,因此您可能必须使用ProcessBuilder在 Rhino 中生成一个执行进程。此外,根据 Javascript 的格式,您可能需要创建自己的“包装器”javascript,其功能类似于 Java 中的主类并调用相关方法。
最后,您需要得到结果 - 显然您无法从 Java 程序直接访问 JavaScript 对象。最简单的方法是 JS 程序将结果打印到标准输出(可能会序列化为 JSON 之类的内容,具体取决于对象的复杂性),由于您启动的方式,结果会直接流式传输到您的 Java 应用程序犀牛过程。如果有的话,这可能是 JS 包装脚本的另一项工作。否则,如果 JS 函数具有可观察到的副作用(创建文件/修改数据库),那么您将能够直接从 Java 查询这些副作用。
任务完成。
我希望您意识到这个问题太模糊,无法获得完整的答案。要求公众设计一个完整的系统超出了您获得有用、可操作的答复的范围。
| 归档时间: |
|
| 查看次数: |
14368 次 |
| 最近记录: |