如何使用 node.js child_process API 运行 jar 文件?

Posted

技术标签:

【中文标题】如何使用 node.js child_process API 运行 jar 文件?【英文标题】:How to run a jar file with node.js child_process API? 【发布时间】:2012-10-05 05:23:22 【问题描述】:

我试图在 nodejs 上运行一个 jar 文件,但它抛出了以下错误:

Error: Unable to access jarfile /home/example/Applications/example.jar

这是我在 test.js 中的以下代码:

var exec = require('child_process').exec, child;
child = exec('/usr/bin/java -jar ~/Applications/example.jar',
  function (error, stdout, stderr)
    console.log('stdout: ' + stdout);
    console.log('stderr: ' + stderr);
    if(error !== null)
      console.log('exec error: ' + error);
    
);

我在这个命令中使用 nodejs 运行了我的 test.js,但收到了上面的错误:

node test.js

我的代码有什么错误吗?我不确定为什么此时它会抛出错误。

【问题讨论】:

尝试这样做:console.log(require("fs").existsSync("~/Applications/example.jar")?"它在那里":"它不在");确定 jar 文件是否确实在该路径上。 我很好奇如何最好地将 java 进程的输出绑定到节点进程。 java进程是否应该只写入文件而节点进程读取文件? java进程如何通知节点? 【参考方案1】:

exec(); 中删除.jar

当使用-jar 参数时,java 会找到没有.jar 的jar 文件。否则就像.. 搜索filename.jar.jar

特殊的雪花 macos 需要 .jar,如果你省略它就不起作用。 (感谢 Gʀɪᴍ)he also created a related question

【讨论】:

变成了这样:child = exec('/usr/bin/java -jar ~/Applications/example',但还是抛出同样的错误。 你的 jar 文件真的在那个位置吗? 谢谢,我想这是我的问题。没有正确写位置。 这个答案在 Mac 上不正确。 .jar 必须包含在内,否则将导致错误。 @Gʀɪᴍ 谁知道我在 2012 年写这个答案时的情况。但很高兴知道。我会添加一个通知【参考方案2】:

如果你在 windows 命令提示符下使用它,你可以使用这个代码。

var exec = require('child_process').exec, child;
child = exec('java -jar C:\\..\\..\\yourjar.jar',
function (error, stdout, stderr)
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if(error !== null)
  console.log('exec error: ' + error);

);

不要忘记双带,否则会一团糟。

【讨论】:

我能否在检查总 CPU 和使用 for 循环的情况下动态运行多个执行 jar 文件的子进程?

以上是关于如何使用 node.js child_process API 运行 jar 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何决定何时使用 Node.js?

如何使用 HTML 输入文件导入 excel 文件并在 Node.js 中读取文件内容(如何将完整路径发送到 Node.js)

如何在 Node.js 中使用 HTTPS

如何在 node.js 上使用邮戳电子邮件?

西塔 js。如何与 Node JS 一起使用

如何使用node.js中的C ++库?