如何在 java 中调用 node.js 并将 console.log 值保存在 String 变量中?
5 回答
检查这些允许您在 jvm 中运行 node.js 脚本的项目
- https://github.com/apigee/trireme (Apigee)
- http://nodyn.io/(红帽)
- https://avatar-js.java.net/ (甲骨文)
Java 应用程序可以与正在运行的 Node.JS 应用程序进行通信。例如,您可以在可用端口上运行 Node.JS 应用程序,Java 应用程序可以通过 tcp 套接字与其通信。
http://nodejs.org/api/net.html
或者,您可以创建一个 http 服务器并公开您的 Java 应用程序可以使用的休息服务。
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 代码。
是的,使用 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();
}
}
}
查看https://github.com/caoccao/Javet,您可以在 java 应用程序中嵌入 node.js 运行时并在两者之间共享变量。
做不到。对于普通的 JS,您可以使用 Rhino,但对于 Node,您需要确保它在 PATH 中,然后调用 Runtine.exec 或带有 ByteArrayOutputsreams 的 ProcessBuilder,稍后可以将其转换为字符串。节点代码无法访问 Java,反之亦然。