从java Application执行node.js脚本时出现问题

时间:2013-05-22 19:16:02

标签: java node.js

当我尝试从java类执行node.js脚本时,我收到以下错误: java.io.IOException:无法运行程序“node events.js”:error = 2,没有这样的文件或目录

这是我的代码可以有人告诉我我在这里缺少什么?

public class NodeInitializer {
    private static final Logger logger = Logger.getLogger(SpringLauncher.class);    
    private Process nodeProcess;
    ProcessBuilder processBuilder;

    public void start(){
        try {
            processBuilder = new ProcessBuilder("node events.js");
            nodeProcess = processBuilder.start();
        } catch (IOException e) {
            logger.error(e.getCause(), e);
        }
    }
}

1 个答案:

答案 0 :(得分:2)

使用

List<String> commands = new LinkedList<String>();
commands.add("node");
commands.add("event.js");

ProcessBuilder processBuilder = new ProcessBuilder(commands);
processBuilder.start();

javadoc for ProcessBuilder

  

命令,表示外部程序文件的字符串列表   被调用及其参数,如果有的话。哪个字符串列表代表   有效的操作系统命令取决于系统。例如,它   每个概念参数都是此列表中的元素,   但是有些操作系统需要程序   tokenize命令行字符串本身 - 在这样的系统上是Java   实现可能需要命令包含两个元素。

根据我的经验,大多数操作系统都要求您对要执行的命令中的元素进行标记,因此[node] (the command/program) [events.js] (the argument)作为列表中的两个元素。

你要

 java.io.IOException: Cannot run program "node events.js": error=2, No such file or directory

因为java通过操作系统尝试将“node events.js”作为程序执行,而不是作为程序及其参数执行。