0

当我尝试从 java 类执行 node.js 脚本时,出现以下错误: java.io.IOException: Cannot run program "node events.js": error=2, No such file or directory

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

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);
        }
    }
}
4

1 回答 1

2

采用

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

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

ProcessBuilder状态的javadoc

一个命令,一个字符串列表,表示要调用的外部程序文件及其参数(如果有)。哪些字符串列表代表有效的操作系统命令取决于系统。例如,每个概念参数通常是该列表中的一个元素,但在某些操作系统中,程序需要自己标记命令行字符串——在这样的系统上,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”作为程序执行,而不是作为程序及其参数。

于 2013-05-22T19:16:36.303 回答