当我尝试从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);
}
}
}
答案 0 :(得分:2)
使用
List<String> commands = new LinkedList<String>();
commands.add("node");
commands.add("event.js");
ProcessBuilder processBuilder = new ProcessBuilder(commands);
processBuilder.start();
命令,表示外部程序文件的字符串列表 被调用及其参数,如果有的话。哪个字符串列表代表 有效的操作系统命令取决于系统。例如,它 每个概念参数都是此列表中的元素, 但是有些操作系统需要程序 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”作为程序执行,而不是作为程序及其参数执行。