【发布时间】:2012-12-25 21:02:31
【问题描述】:
如何在 java 中调用 node.js 并将 console.log 值保存在 String 变量中?
【问题讨论】:
如何在 java 中调用 node.js 并将 console.log 值保存在 String 变量中?
【问题讨论】:
查看https://github.com/caoccao/Javet,您可以在 java 中嵌入 node.js 运行时 应用程序并在两者之间共享变量。
【讨论】:
是的,使用 java 执行和 node.js 文件非常容易。
import java.io.FileReader;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public class RunScriptFileDemo {
public static void main(String[] args) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("js");
try {
FileReader reader = new FileReader("yourFile.js");
engine.eval(reader);
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
【讨论】:
检查这些允许您在 jvm 中运行 node.js 脚本的项目
【讨论】:
Java 应用程序可以与正在运行的 Node.JS 应用程序进行通信。例如,您可以让 Node.JS 应用程序在可用端口上运行,而 Java 应用程序可以通过 tcp 套接字与其通信。
http://nodejs.org/api/net.html
或者您可以创建一个 http 服务器并公开一个您的 Java 应用可以使用的 rest 服务。
http://nodejs.org/api/http.html
或者如 md_5 所说,您可以使用 Runtime.exec,然后在生成的进程上调用 getInputStream。
http://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html
node.js 和 Java 之间的通信方式与其他可以完成的跨应用程序通信没有什么不同。
还可以使用 node-java 之类的东西从 Node.JS 应用程序调用 Java 代码。
【讨论】:
做不到。对于普通的 JS,您可以使用 Rhino,但对于 Node,您需要确保它在 PATH 中,然后调用 Runtine.exec 或带有 ByteArrayOutputsreams 的 ProcessBuilder,稍后可以将其转换为字符串。节点代码无法访问 Java,反之亦然。
【讨论】: