2013-05-22 48 views
0

我目前正在开发一个使用socket.io与node.js进行通信的Java系统。系统和脚本位于同一台服务器上。我怎样才能从我的Java代码执行脚本,并保持它从我的应用程序活着?我可以从Java类执行node.js脚本吗?

回答

1

注意,所以他们需要的是:你可以用下面的Java代码分离:

ProcessBuilder pb = new ProcessBuilder("node", "app.js"); 

这也是继承其控制台输出,在开始过程和获得提及的处理有用:

pb.redirectOutput(ProcessBuilder.Redirect.INHERIT); 
pb.redirectError(ProcessBuilder.Redirect.INHERIT); 
Process p = pb.start(); 
1

看看ProcessBuilder class。

如果我正确理解您的问题,您可以像使用shell一样在机器上启动任何进程。

+0

Java 7 ProcessBuilder更好。它允许管道:http://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html –

4

假设您有一个名为“mynodejs.js”的node.js脚本。使用进程生成时的路径,你的JavaScript文件是一个自变量和“节点”是命令

Process p = Runtime.getRuntime().exec("node mynodejs.js"); 

ProcessBuilder b = new ProcessBuilder("node mynodejs.js", "-args"); 
+0

我执行这些命令时遇到问题我总是得到一个错误,说该节点不是一个程序,但我不要从终端执行这个错误是我的应用程序没有正确读取环境变量 –

+0

请确保您的node.exe在您的系统路径中,或者您可能想要使用类似如下的代码: Process p = Runtime.getRuntime()。exec (“C:\\ Program Files \\ nodejs \\ node.exe mynodejs.js”); –

相关问题